poj 1094 拓撲排序

2021-06-08 13:20:10 字數 767 閱讀 3815

我居然要講課了!!我這麼水,嘖嘖。。好好準備呀。。要不就死定了。。

這道題,典型的拓撲排序,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...