這裡用到了網上找的的拓撲排序的模版。
map[i][j]存放有向圖的起點i和終點j之間是否連線,=1連線,=0為空。
結果的順序存放在res陣列裡面。
d[i]表示第i個元素的入度,
1)入度為零即表示可以讀;
2)有多個入度為零的點則最終順序不唯一;
3)不存在入度為零的點則順序不能確定。
這道題不用考慮有環的情況。
#include using namespace std;
#define max 510
int map[max][max]; //圖
int res[max]; // 存放結果
int topsort(int n,int mat[max][max],int* res)
topsort(n,map,res);
for(int i=0;i
確定比賽名次 HDU杭電1285 拓撲排序
problem description 有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在請你程式設計序...
杭電 1285 確定比賽名次 拓撲排序入門
傳送門 拓撲排序 按某種順序輸出沒有前驅的點。思路 題目即要求按字典序拓撲排序。ac include include includeusing namespace std int n int par 505 前驅 int ans 505 記錄答案 bool chart 505 505 記錄兩人是否進...
杭電 1285 確定比賽名次(直接拓撲排序)
有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在請你程式設計序確定排名。輸入有若干組,每組中的第一行為...