hdu-1285傳送門
資料:input
輸入有若干組,每組中的第一行為二個數n(1<=n<=500),m;其中n表示隊伍的個數,m表示接著有m行的輸入資料。接下來的m行資料中,每行也有兩個整數p1,p2表示即p1隊贏了p2隊。
output
給出乙個符合要求的排名。輸出時隊伍號之間有空格,最後一名後面沒有空格。
其他說明:符合條件的排名可能不是唯一的,此時要求輸出時編號小的隊伍在前;輸入資料保證是正確的,即輸入資料確保一定能有乙個符合要求的排名。
sample input
4 31 22 3
4 3
題意:給n,m n表示隊伍個數,然後m行資料,每行是x,y 表示x贏了y...最後從前往後依次排名
思路:比較裸的拓撲排序;優先佇列加拓撲排序 入度為零即輸出!見**~the first:
#include#include#includeusing namespace std;
typedef long long ll;
const int n=1e5+10;
#define mem(a,b) memset(a,b,sizeof(a))
int ans[550],ru[550];
int dp[550][550];
int n,m;
void toposort()
}for(int i=1; i<=n; i++)
}}int main()
toposort();
for(int i=1; ithe second:
#include#include#include#includeusing namespace std;
typedef long long ll;
const int n=550;
#define mem(a,b) memset(a,b,sizeof(a))
priority_queue,greater>q;
int ru[n],dp[n][n];
int n,m;
void toposort()
else printf("%d\n",x);
for(int i=1; i<=n; i++)
}}int main()
toposort();
}return 0;
}
acmer加油! 拓撲排序 確定比賽名次
題目 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 輸入有若干組,每組...