拓撲排序hdu1285

2021-07-24 18:20:02 字數 729 閱讀 4422

題意 有n個比賽隊(1<=n<=500),編號依次為1,2,3,。。。。,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在請你程式設計序確定排名。

思路:由題意可知這些輸贏的關係不可能構成乙個圈,比如1,2,3三隊,1贏了2,2贏了3,3贏了1,這樣的話,輸出的排名順序完全是不固定的。可以用拓撲排序來解決這種有向無環圖排序的問題。拓撲排序的大致思路是:

1. 找出乙個沒有入度的點

2. 刪除它和它的邊,並記錄該點

3. 重複以上過程

最後依次輸出記錄的這些點就完成了排序。

#include using namespace std;

#include #include #define n 550

#define m 2100

int map[n][n], in[m], ans[m];

int main()

} num=0;

while(num!=n)

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

} }

for(int i=0; iprintf(i==n-1?"%d\n":"%d ",ans[i]);

} return 0;

}

hdu1285(拓撲排序)

拓撲排序簡單來說就是把乙個圖的所有節點排序,使得每一條有向邊 u,v 對應的u都排在v的前面。拓撲排序最大的用途就是判斷乙個有向圖是否有環,當然判斷還有一種方法就是floyd演算法。如果用鄰接表的話拓撲排序的時間複雜度是o n e 鄰接矩陣是o n 2 n表示頂點數,e表示邊數,floyd時間複雜度...

hdu 1285(拓撲排序)

題意 給各個隊間的勝負關係,讓排名次,名詞相同按從小到大排。解析 拓撲排序是應用於有向無迴路圖 direct acyclic graph,簡稱dag 上的一種排序方式,對乙個有向無迴路圖進行拓撲排序後,所有的頂點形成乙個序列,對所有邊 u,v 滿足u 在v 的前面。該序列說明了頂點表示的事件或狀態發...

HDU1285 拓撲排序

拓撲排序的水題,題意是確定比賽的名次,每一次將輸的人的入度加一,然後就是拓撲排序的模板套路了,記住輸入的時候可能有重邊,貼 include include include include using namespace std int map 600 600 head 600 hash 600 in...