題目大意:給你字母表的前n個大寫字母和m個大小關係(即有向邊)。所有的邊按順序給你,要你在能判斷出全序或矛盾的時候及時輸出
(即當輸入i條邊的時候,出現了有向環或已經全序了,那麼應該及時輸出,),或者直到最後也不能出現全序。
題目分析:
我們只需要對於每一條邊(共m條有向邊)都呼叫一次topo排序,看看能否出現結果或者出現矛盾即可.
如果能topo排序就說明沒有矛盾,但是可能是全序或者偏序集.如果是全序集,那麼topo排序的過程中,入度為0的點始終只會存在1個.
為了保證輸出什麼條件不滿足,所以要在迴圈裡面加topu()
#include#include#include#include#include#include#includeusing namespace std;
vectorg[30];//儲存圖
int in[30];//入度
char ans[30];
int in2[30];//複製上邊的度。因為中間會牽扯到度的更改
拓撲排序Sorting It All Out
zoj1060 poj1094 sorting it all out 題意 給出兩個整數 n m n代表前n個大寫字母參與 m代表m個表示式 根據給出的m個式子 將最終符合要求的順序輸出 有三種結果 1.能夠根據給出的表示式求出排序的序列 且輸出到第幾個表示式就能得到結果 2.有環的情況 序列有好幾...
Legal or Not hdu3342拓撲排序
題意 判斷圖中是否有環存在 思路 簡單的拓撲排序 將有關係的點,加乙個有向邊,然後記錄出入度,先找入度為0的點,將和他聯絡的點入度 1,再找入度為0的直到沒有點為止,判斷點是否全訪問過,如果是說明不存在環,如果不是就說明有環存在 include include include include inc...
傳遞閉包 sorting it all out
給定n個不等式 判斷是否有邏輯錯誤 floyd傳遞閉包問題 include include include include using namespace std const int n 1010 int read while c 0 c 9 return f?x x struct edge e n...