產生冠軍 hdu2094拓撲排序

2021-06-17 20:37:08 字數 516 閱讀 2992

題意:給你一些比賽情況,看能否產生冠軍

思路:拓撲排序,給每個字串編乙個號,然後就是建圖,只要找到入度為0的點並且只有乙個那就能產生冠軍,否則不行

#include#include#include#include#includeusing namespace std;

char str[2005][100];

int num[2005];

int s_count = 0;

int find(char *s)

strcpy(str[s_count],s);

return s_count++;

}int main()

int sum = 0;

for(i = 0; i < s_count; i++)

if(sum == 1)

printf("yes\n");

else

printf("no\n");

}return 0;

}

產生冠軍((hdu2094))((拓撲排序))

小結。1,利用拓撲排序當確定比賽的名次時用toposort 用ans 記錄入讀為零的點最後再依次輸出即可 這種情況預設不是環形才可 注意對入度隨時的處理 如hdu1285 2,當利用產生冠軍時 記錄 入度,最後看入度為零的點有幾個如果有多個則沒冠軍,否則反之 3,當確定是否能判定名次時 既沒環 用t...

HDU2094 產生冠軍 拓撲排序

題目大意 輸入一些選手之間的比賽結果,問你是否能確定出冠軍。很明顯,冠軍只有乙個,我們可以對於每一組輸入結果,把它存入乙個圖的鄰接矩陣中,然後遍歷入度為0的頂點即可,如果入度為0的頂點只有乙個,那麼很顯然,該頂點對應的選手就是冠軍,如果入度為0的頂點有多個,那麼就表明這些人直接沒有 比出勝負,冠軍就...

hdu2094 產生冠軍 拓撲排序

有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個規則,無需迴圈較量,或許就能確定冠軍。你...