poj1182 食物鏈[並查集]

食物鏈
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 65279 Accepted: 19216
Description

動物王國中有三類動物A,B,C,這三類動物的食物鏈構成了有趣的環形。A喫B, B喫C,C喫A。
現有N個動物,以1-N編號。每個動物都是A,B,C中的一種,但是我們並不知道它到底是哪一種。
有人用兩種說法對這N個動物所構成的食物鏈關係進行描述:
第一種說法是”1 X Y”,表示X和Y是同類。
第二種說法是”2 X Y”,表示X喫Y。
此人對N個動物,用上述兩種說法,一句接一句地說出K句話,這K句話有的是真的,有的是假的。當一句話滿足下列三條之一時,這句話就是假話,否則就是真話。
1) 當前的話與前面的某些真的話衝突,就是假話;
2) 當前的話中X或Y比N大,就是假話;
3) 當前的話表示X喫X,就是假話。
你的任務是根據給定的N(1 <= N <= 50,000)和K句話(0 <= K <= 100,000),輸出假話的總數。
Input

第一行是兩個整數N和K,以一個空格分隔。
以下K行每行是三個正整數 D,X,Y,兩數之間用一個空格隔開,其中D表示說法的種類。
若D=1,則表示X和Y是同類。
若D=2,則表示X喫Y。
Output

只有一個整數,表示假話的數目。
Sample Input

100 7
1 101 1
2 1 2
2 2 3
2 3 3
1 1 3
2 3 1
1 5 5
Sample Output

3
Source

Noi 01

題意:給定任意兩點間的關係,有兩種給出方式,一是兩點是同類,二是第二個點是第一個點的前驅,且我們規定三個依次爲後一點前驅(即成三元環)的點爲食物鏈。
已知所有點只可能成食物鏈上全部或部分關係(即存在一種對應關係使得每個點都在食物鏈上有對應點),求按順序給出的信息的,與條件矛盾的信息有多少個。(對信息的要求是:不一定完全滿足,但不能矛盾)

分析:
很容易想到和狡猾的商人一樣,保存點到邊上的距離(定義同類距離爲0,否則爲1,有向邊),很容易知道若兩點在同一棵樹上則可以根據彼此到根節點的距離%3的餘數判斷兩點關係(具體看程序);
然後因爲是有向邊,所以關係很難把握,建議大家畫圖的時候可以把邊的箭頭標出來理解(比如爲什麼加邊的時候,ste[y]是加上,而ste[y]是被減去呢?)

食物鏈
Time Limit: 1000MS      Memory Limit: 10000K
Total Submissions: 65279        Accepted: 19216
Description

動物王國中有三類動物A,B,C,這三類動物的食物鏈構成了有趣的環形。A喫B, B喫CC喫A。 
現有N個動物,以1N編號。每個動物都是A,B,C中的一種,但是我們並不知道它到底是哪一種。 
有人用兩種說法對這N個動物所構成的食物鏈關係進行描述: 
第一種說法是"1 X Y",表示X和Y是同類。 
第二種說法是"2 X Y",表示X喫Y。 
此人對N個動物,用上述兩種說法,一句接一句地說出K句話,這K句話有的是真的,有的是假的。當一句話滿足下列三條之一時,這句話就是假話,否則就是真話。 
1)  當前的話與前面的某些真的話衝突,就是假話; 
2)  當前的話中X或Y比N大,就是假話; 
3)  當前的話表示X喫X,就是假話。 
你的任務是根據給定的N1 <= N <= 50,000)和K句話(0 <= K <= 100,000),輸出假話的總數。 
Input

第一行是兩個整數NK,以一個空格分隔。 
以下K行每行是三個正整數 D,X,Y,兩數之間用一個空格隔開,其中D表示說法的種類。 
若D=1,則表示X和Y是同類。 
若D=2,則表示X喫Y。
Output

只有一個整數,表示假話的數目。
Sample Input

100 7
1 101 1 
2 1 2
2 2 3 
2 3 3 
1 1 3 
2 3 1 
1 5 5
Sample Output

3
Source

Noi 01

至此,並查集專sui項bian訓shui練ti很zhong快yu結束啦!撒花!
並查集靈活起來真是可怕啊!是很訓練思維的專題呢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章