確定比賽名次 HDU 1285 ,拓撲

2022-04-13 20:03:34 字數 1104 閱讀 7509

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

input輸入有若干組,每組中的第一行為二個數n(1<=n<=500),m;其中n表示隊伍的個數,m表示接著有m行的輸入資料。接下來的m行資料中,每行也有兩個整數p1,p2表示即p1隊贏了p2隊。

output給出乙個符合要求的排名。輸出時隊伍號之間有空格,最後一名後面沒有空格。

其他說明:符合條件的排名可能不是唯一的,此時要求輸出時編號小的隊伍在前;輸入資料保證是正確的,即輸入資料確保一定能有乙個符合要求的排名。

sample input

4 3

1 22 3

4 3

sample output
1 2 4 3

拓撲排序即可;

開始不明白題中的編號小的在前面啥意思,後來才知道,編號大小就在掃瞄indrgree陣列時就出來了

若是題目為編號大的在前面,倒序掃瞄indegree就可以了

#includeusing

namespace

std;

const

int m = 500 + 5

;int

g[m][m],indegree[m],topo[m];

int n; //

隊伍數

void

tuopu()

}topo[k++] = now; //

儲存 indegree[now] = -1; //

防止重複尋找

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

斷掉與now相連的邊,即與其相連的邊的度數-1

}for(int j = 1; j < k-1; j++)

cout

<"";

cout

<1]<}int

main()

}tuopu();

}return0;

}

hhaaaa.

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

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

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

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

Hdu 1285 確定比賽名次(拓撲排序)

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