A 確定比賽名次(拓撲)

2022-03-07 13:47:32 字數 1064 閱讀 8993

點選開啟鏈結

有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
select code

#include

#include

#define maxn 517

int g[maxn][maxn]; //路徑

int in_degree[maxn]; //入度

int ans[maxn];

int n,m,x,y;

int i,j;

void

toposort

() }

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

}void

init

()int

main

() toposort();

for(i=1 ; iprintf("%d ",ans[i]);

printf("%d\n",ans[n]);

} return

0;

}

這有乙個將拓撲整理的很好的鏈結(好多種方法

),不過這種直接的方法最好理解,適合初學者me

點選開啟鏈結

拓撲排序 確定比賽名次

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

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

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

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

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