產生冠軍 HDU 2094 (拓撲排序)

2022-06-12 04:06:10 字數 759 閱讀 1145

分析: 當有且只有乙個節點入度為0時,該節點即為冠軍,否則不能產生冠軍。所以以下**中只要入度大於0的無論是幾都將其設定為1。

1 #include 2 #include 3 #include 4 #include 

5 #include 6 #include 7 #include 8 #include 9

1011

using

namespace

std;

1213

14int

main()

1529

30int cnt = 0; //

入度為0的節點個數

31for(map::iterator it = mp.begin(); it != mp.end(); ++it)

32if(it->second == 0

)

33 cnt++;

3435

36if(cnt == 1

)37 cout << "

yes"

<

38else

39 cout << "no"

<

4142

return0;

43 }

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

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

產生冠軍 hdu2094拓撲排序

題意 給你一些比賽情況,看能否產生冠軍 思路 拓撲排序,給每個字串編乙個號,然後就是建圖,只要找到入度為0的點並且只有乙個那就能產生冠軍,否則不行 include include include include includeusing namespace std char str 2005 100...

HDU2094 產生冠軍 拓撲排序

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