Rank of Tetris 拓撲排序 並查集

2022-05-01 16:24:10 字數 2369 閱讀 3143

problem description

自從lele開發了rating系統,他的tetris事業更是如虎添翼,不久他遍把這個遊戲推向了全球。

為了更好的符合那些愛好者的喜好,lele又想了乙個新點子:他將製作乙個全球tetris高手排行榜,定時更新,名堂要比富比士富豪榜還響。關於如何排名,這個不用說都知道是根據rating從高到低來排,如果兩個人具有相同的rating,那就按這幾個人的rp從高到低來排。

終於,lele要開始行動了,對n個人進行排名。為了方便起見,每個人都已經被編號,分別從0到n-1,並且編號越大,rp就越高。

同時lele從狗仔隊裡取得一些(m個)關於rating的資訊。這些資訊可能有三種情況,分別是"a > b","a = b","a < b",分別表示a的rating高於b,等於b,小於b。

現在lele並不是讓你來幫他製作這個高手榜,他只是想知道,根據這些資訊是否能夠確定出這個高手榜,是的話就輸出"ok"。否則就請你判斷出錯的原因,到底是因為資訊不完全(輸出"uncertain"),還是因為這些資訊中包含衝突(輸出"conflict")。

注意,如果資訊中同時包含衝突且資訊不完全,就輸出"conflict"。

input

本題目包含多組測試,請處理到檔案結束。 每組測試第一行包含兩個整數n,m(0<=n<=10000,0<=m<=20000),分別表示要排名的人數以及得到的關係數。 接下來有m行,分別表示這些關係

output

對於每組測試,在一行裡按題目要求輸出

sample input

3 30 > 1

1 < 2

0 > 2

4 41 = 2

1 > 3

2 > 0

0 > 1

3 31 > 0

1 > 2

2 < 1

sample output

okconflict

uncertain

衝突:通過判環來判斷

資訊不完全:通過判斷佇列元素是否大於一來判斷

= 用並查集來判斷   連在一起即可  記得cnt要加一 

#includeusing

namespace

std;

//input by bxd

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);--i)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m)

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define pb push_back

#define rep(i,n) for(int i=0;i

#define clr(a,v) memset(a,v,sizeof a)

#define inf 0x3f3f3f3f

////////////////////////////////////

//const

int n=200000+5

;int

f[n];

int find1(int

x)int

in[n];vectoredge[n];

void union1(int a,int

b)struct

node

s[n];

intmain()

}int conf=0

;

int unkonw=0

; rep(i,

1,m)

else

}queue

q;rep(i,

0,n-1

)

if(f[i]==i&&!in[i])//

那些和他並在一起的都已經被抹殺了 所以要f[i]==i

q.push(i);

while(!q.empty())

}if(cnt!=n)

conf=1

;

if(conf)

printf(

"conflict\n");

else

if(unkonw)

printf(

"uncertain\n");

else printf("

ok\n");

rep(i,

0,n)in[i]=0

,edge[i].clear();

}return0;

}

view code

Rank of Tetris 拓撲排序 並查集

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

Legal or Not hdu3342拓撲排序

題意 判斷圖中是否有環存在 思路 簡單的拓撲排序 將有關係的點,加乙個有向邊,然後記錄出入度,先找入度為0的點,將和他聯絡的點入度 1,再找入度為0的直到沒有點為止,判斷點是否全訪問過,如果是說明不存在環,如果不是就說明有環存在 include include include include inc...

HDU3342Legal or Not 拓撲排序

有向圖判斷是否成環 如果是環輸出no 只要入度為0的點的個數 等於 總的點的個數則無環 includeusing namespace std input by bxd define rep i,a,b for int i a i b i define ri n scanf d n define ri...