問題概述:有n個比賽隊,編號為從1到n,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在 裁
判委員會不能直接獲得每個隊的比賽成績,
只知道每場比賽的結果,即p1贏p2(用p1 p2表示)這種,排名時p1在 必
須在p2之前,現在請你程式設計序確定排名(答案不止一種,按照隊伍從小到大排列)
輸入樣例: 對應輸出:
4 3 1 2 4 3
1 22 3
4 3相關知識點:
兩種演算法:
**如下:
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define maxn 1004
vectort[maxn];
priority_queue, greater>q;//其頂端元素為最小
int main()
for(i=1;i<=n;i++)//首先找到起初入度為0的點,他們一定排在前邊
while(!q.empty())
}int flag=0;
for(i=1;i<=n;i++)
}if(flag)
printf("error\n");
else
} }
HDU 1258 確定比賽名次 拓撲排序
有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在請你程式設計序確定排名。input 輸入有若干組,每組...
HDU 1258 勝利大逃亡
ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個abc的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位置,現在知道魔王將在t分鐘後回到城堡,ign...
拓撲排序 Kahn演算法
該演算法的關鍵在於需要維護乙個入度為0的頂點的集合 每次從該集合中取出 如果要求輸出時編號小的在前,可以用優先佇列儲存集合 乙個頂點,將該頂點放入儲存結果的 list中。緊接著迴圈遍歷由該頂點引出的所有邊,從圖中移除這條邊,同時獲取該邊的另外乙個頂點,如果該頂點的入度在減去本條邊之後為0,那麼也將這...