我居然要講課了!!我這麼水,嘖嘖。。好好準備呀。。要不就死定了。。
這道題,典型的拓撲排序,n個字母,操作m次,然後看看對不對。
看了好久才懂,我真是水呀。。
題解:每輸入一組條件,就進行一次拓撲排序,看看符不符合,在topsort函式中,先迴圈n次,目的把所有入度為零的點都找到並操作,在每次迴圈裡,先看看有幾個入度為零的點。
若沒有,必存在環,因為每個點入度陣列初始化為零,如果真存在環了,行了,就可以說他inconsistency found了。
若有多個入度為零的點,那麼這個圖的關係還是不明確的,返回-1,讓主函式繼續接收資訊。
若n個迴圈都順利進行完了,flag2也不是-1,那麼根據flag2的初始化,他被賦為了1,那麼返回1,主函式中輸出這一切,表示我們找到了。
flag1的作用主要是找沒找到,找到了賦為1,以後即使接收了資訊也不拓撲排序了。
這道題呀,如果2 2aps:對於3 2 a
#include#includeint n,m,map[30][30],in[30],q,flag1,it[30];
int topsort()
}return flag2;
}int main()
if(!q&&!flag1)
}if(!flag1)//所有都結束了 還沒被標記,行了。。找不到了
printf("sorted sequence cannot be determined.\n");
}return 0;
}
POJ 1094 拓撲排序
文章大意是將n個字母排序 n 26 最終必須排成鍊錶式的輸出 一旦確定或者出現環,記錄當前步數,後續輸入無視 加個拓撲排序判斷圖的總結 1 如果輸入的有向圖中的點,不存在入度為0的點,則存在迴路,反過來則不成立 2 如果入隊的點的個數小於輸入的點的個數,則肯定存在迴路 3 如果存在的入度為零的點大於...
拓撲排序 poj1094
此題題目有點小問題,那也是很多人ac不了的原因 問題是,當給定的前k項條件能夠確定出大小順序時,即便k項之後出現了矛盾條件,輸出也應該是sorted sequence determined after k relations 後面再輸出排序好的序列!include include using nam...
POJ 1094 拓撲排序)
拓排 各種判 program p1094 type map3 record indegree array a z of longint map array a z 1.26 of char outdegree array a z of longint end var n,m,i,j,num,valu...