HDU 1811 並查集 拓撲排序

2021-09-16 22:40:42 字數 986 閱讀 1061

題目鏈結: rank of tetris

我們先處理=的情況,把相等關係的兩個數字合併,最終只用他們的根來代表他們。然後再處理》 < 的情況,我們需要先找到每個數字的根,再進行邊的連線。我們還需要記錄縮點後最終有幾個數字,以及進行topo的時候,放進佇列的條件是in == 0 && find[i] == i(因為有些數字沒有邊連線,它們被我們合併了,就是=的情況)

#include

#include

#include

#include

#include

using namespace std;

int cnt,sum;

vector<

int>g[

20001];

int flag,n ,f[

20001];

int in[

20001];

intfinder

(int x)

void

combine

(int a,

int b)

}void

bfs(

)while

(!q.

empty()

)}}if

(cnt != sum)

flag =2;

}int

main()

}}for(

int i =

1; i <= m ; i++

)else}}

bfs();

if(flag ==2)

cout <<

"conflict"

<< endl;

else

if(flag ==1)

cout <<

"uncertain"

<< endl;

else

cout <<

"ok"

<< endl;

}}

hdu1811 並查集 拓撲排序

description 自從lele開發了rating系統,他的tetris事業更是如虎添翼,不久他遍把這個遊戲推向了全球。為了更好的符合那些愛好者的喜好,lele又想了乙個新點子 他將製作乙個全球tetris高手排行榜,定時更新,名堂要比富比士富豪榜還響。關於如何排名,這個不用說都知道是根據rat...

hdu1811 並查集 拓撲排序

題目大意 有n個點 編號0 n 1 有m個關係,或者 若這n個點能形成固定的鏈式大小關係,就輸出 ok 如果關係有衝突,則輸出 conflict 如果關係不全,則輸出 uncertain ps 坑點,conflict 優先於 uncertain 所以判斷到 uncertain 條件時,別急著輸出 u...

hdu 1811 拓撲排序 並查集判斷

拓撲排序的兩個性質 如果一次入隊入度為零的點大於1則說明拓撲排序序列不唯一 如果排序的總個數小於給定的個數,則說明存在迴路 include include include include includeusing namespace std struct node q 30000 int indeg...