hdoj1285 拓撲排序

2022-05-29 04:06:16 字數 912 閱讀 3832

題目鏈結

分析: 

很明顯,一看就是拓撲排序。 看似簡單, 暗藏**啊。 第一次做的時候一邊拓撲排序一邊標記他們的深度, 例如題中給的例子 。1的深度為1。 2、4的深度為2; 3的深度為3。 然後按深度的逆序輸出深度相同的先輸出小的。 其實不然啊!! 舉個例子6個點, 邊為 最好自己畫一下, 看的更明白些!! 按我第一次思路 從1到6他們深度依次為1,1,2,2,3,3; 結果為5, 6,3, 4, 1, 2。 其實哩。正確結果應該為5, 3, 1, 6, 2, 4。 

最初沒有比5、6大的數, 5〈 6,所以輸出5。 這時相當於沒有5了, 去掉5之後發現, 也沒有比3大的數了, 3又小於6, 所以先輸出3。 取掉3, 這時也沒有比1大的數了, 在輸出1………….直到輸出所有點。 

正確解題思路為: 

1)選乙個入度為0的點p輸出; 

2)從圖中刪除p點 

3)將p全部後繼點的入度-1 

4)重複1-3,直到全部點都輸出

#include#include

#include

#include

#include

using

namespace

std;

int n, m, mx, v[505], e[505][505], ru[505

];void

topu()

else

printf("%d

", i);

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

}sum++;

break

; }}}

}int

main()

}topu();

cout

<

}return0;

}

view code

hdoj1285 拓撲排序

確定比賽名次 分析 很明顯,一看就是拓撲排序。看似簡單,暗藏 啊。第一次做的時候一邊拓撲排序一邊標記他們的深度,例如題中給的例子 1的深度為1。2 4的深度為2 3的深度為3。然後按深度的逆序輸出深度相同的先輸出小的。其實不然啊!舉個例子6個點,邊為 最好自己畫一下,看的更明白些!按我第一次思路 從...

hdoj 1285 確定比賽名次 拓撲排序

中文題,不解釋。這是我的第一道拓撲排序題,先來講一下什麼是拓撲排序 拓撲排序其實就是如果要進行某一項活動的時候,它的基礎活動要先進行。比如說,學概率論之前必須要學會高等數學,那麼高等數學就是學概率論的前提條件,這就牽涉到先後課程怎麼學習,就是誰先學誰後學習,拓撲排序就是解決這類問題的。題目鏈結 in...

HDOJ 1285 確定比賽名次

確定比賽名次 time limit 1000msmemory limit 32768kb64bit io format i64d i64u description 有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會...