自從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 3
0 > 1
1 < 2
0 > 2
4 41 = 2
1 > 3
2 > 0
0 > 1
3 31 > 0
1 > 2
2 < 1
sample output
ok
conflict
uncertain
拓撲排序,這是個很不錯的題,把不確定順序,衝突,正常順序,都弄了一遍,搞懂每種情況有什麼特點就好了。 by——qwb大佬。
太菜了太菜了,這題寫了一下午。。。。。 各種智商碾壓。
想了四個小時,就那乙個點沒get到,然後一直鑽牛角尖。
解法: 這道題難在有等於號,如果沒有等於號 這就是道裸的拓撲排序模板題。
既然等於號的情況難以判斷,那我們就先化簡一波問題,不考慮等於號,剩下的情況就很簡單,很好處理。
然後我們反過頭來單獨考慮等於號。我們發現,有等於關係的點與外部所連的邊都是共享的,這意味著,有等於關係的點對外部的點來說是同乙個點,而又等於關係的點內部已經是有序的。 因此,我們只需要吧有等於關係的點用並查集並在一起,在使用鄰接鍊錶新增邊的時候全部用父節點代替,這樣就很簡單了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int max=1e5+5;
int par[max];
int ranks[max];
int nodesize[max];
void init(int n)// 並查集初始化
}int finds(int x)
else
}void unite(int x,int y)
class node
node(){}
};int in[22222];
int head[22222];
int tot;
void listinit()//初始化鄰接鍊錶
class sa
;sa edge[55555];
void add(int u,int v)
vector
v[3];
int vis[22222];
int sz;
int top_sort(int n)
int flag=0;
while(!q.empty())
}if(szreturn -1;
else
return flag;
}int main()
else
if(cnt=='<')
else
}for(int i=0;i0].size();i++)
int theflag=1;
for(int i=0;i1].size()&&theflag;i++)
//cout<"<}
for(int i=0;i2].size()&&theflag;i++)
//cout<"<}
int sum=top_sort(n);
//cout<<"sum:"else
if(sum<=0) puts("ok");
else
puts("uncertain");
}return
0;}
Rank of Tetris 拓撲排序 並查集
problem description 自從lele開發了rating系統,他的tetris事業更是如虎添翼,不久他遍把這個遊戲推向了全球。為了更好的符合那些愛好者的喜好,lele又想了乙個新點子 他將製作乙個全球tetris高手排行榜,定時更新,名堂要比富比士富豪榜還響。關於如何排名,這個不用說都...
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...