URAL1022(拓撲排序)

2022-07-18 07:09:11 字數 895 閱讀 3492

解題思路:題目全英的,理解起來有點困難。剛開始我推測著應該是有向圖中找一條包含所有頂點的通路,結果還是不對。如果早知道是拓撲排序就好辦了。這是資料結構中的經典演算法,首先找到入度為0的點,輸出並去掉該頂點與其他頂點相連的邊,然後依次迴圈上述操作,直到所有頂點都輸出。

需要定義乙個存放頂點入度的陣列(degree),

最多100個頂點,所有可以用鄰接矩陣儲存有向圖的結構,如果頂點過多,則應採用鄰接表作有向圖的儲存結構。雖然題目中有不存在的情況,可是根據推斷得知必定存在這樣的序列。由程式提交

結果驗證確實如此。不過考慮到該情況也不會出錯,就是麻煩些。

view code

1 #include 

2 #include 

3 #include 

4using

namespace std;

5int map[105][105];

6int degree[105],visit[105];

7int main()

8 24         }

25for(i=1;i<=n;i++)

26if(degree[i]==0&&!visit[i])

31for(j=1;j<=n;j++)

32if(map[i][j])degree[j]--;

33                 k=1;

34while(k35                 

43for(j=1;j<=n;j++)

44if(map[i][j])degree[j]--;

45                 }

46                 printf("

\n");

47     }

48return

0;49 }

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...

1022 三整數排序

1022 三整數排序 時間限制 1 sec 記憶體限制 30 mb 提交 35533 解決 18931 狀態 討論版 提交 命題人 admin 題目描述 從鍵盤輸入三個整數x,y和z,按從大到小的順序輸出它們的值。輸入輸入三個整數x,y和z。輸出按從大到小的順序輸出它們的值。樣例輸入 copy 20...

python 排序 拓撲排序

在電腦科學領域中,有向圖的拓撲排序是其頂點的先行排序,對於每個從頂點u到頂點v的有向邊uv,在排序的結果中u都在v之前。如果圖是有向無環圖,則拓撲排序是可能的 為什麼不說一定呢?圖論 是組合數學的乙個分支,它和其他分支比如 群論 拓撲學 矩陣論有著密切的關係。圖是圖論的主要研究物件。圖是由若干給定的...