我不知道第三次世界大戰用的是什麼**,但我知道第四次世界大戰時用的石頭和木棍。
--愛因斯坦
在某個平行宇宙中,最糟糕的情況發生了,第三次世界大戰一觸即發!這個時候地球上的
n個國家,已經完全的分為了兩個陣營,紅色陣營和藍色陣營。為了能夠使得兩方陣營能夠和解,為了人類最終的命運不是核爆輻射,聯合國正在採取各種各樣的方式和手段促使雙方陣營和解。
聯合國首先要搞清楚乙個問題,每乙個國家都屬於哪一方陣營。因為各方政治利益的權衡,所以絕大多數國家,並沒有直接表態,自己屬於哪個陣營。如今,聯合國情報局獲得了一些資訊,每條資訊包含兩個國家的編號,表示這兩個國家屬於不同的陣營(情報正確無誤)。憑藉著現有這些零碎的資訊,再給出任意兩個國家的編號,能否確定他們屬於同一方陣營呢?
假設此時地球上有
n個國家(2≤n≤10 ^ 5),國家的編號從1到n,每個國家不是屬於紅色陣營,就是屬於藍色正營。你將依次得到m條指令(2≤m≤10 ^ 5),這指令將只有以下兩種情況:
1. d a b
a和b分別代表兩個國家的編號。這一條指令的意思是a和b屬於不同的陣營。
2. a a b
a和b分別代表兩個國家的編號。這一條指令的意思是,根據之前的所有指令,你要準確的判斷出a和b是否屬於同乙個陣營。
輸入的第一行包含乙個整數t(1 < =t < = 20),測試用例的數量。然後t組例子如下。每個測試用例以兩個整數n和m開頭,代表n個國家,後跟m行指令,每個行包含如上所述的一條訊息。
對於每一條a a b的指令,你的程式都應該根據之前得到的資訊做出準確判斷。
如果屬於同一陣營,輸出「belong to same group.」
如果不屬於同一陣營,輸出「belong to different group.」
如果不確定,輸出「not sure yet.」
110 10
a 1 2
d 1 2
a 1 2
d 2 3
d 3 4
d 7 8
a 2 4
a 2 7
d 4 7
a 1 7
not sure yet.ac:**belong to different group.
belong to same group.
not sure yet.
belong to same group.
#include#include#include#includeusing namespace std;
const int maxn = (int)1e5+5;
int par[maxn],val[maxn];
void init(int n)
{ for(int i =0;i>t;
while(t--)
{int n,m;
cin>>n>>m;
init(n);
char a;
int b,c;
for(int i = 0;i題目鏈結點選開啟鏈結
4998 星球聯盟 LCT 並查集
description 在遙遠的s星系中一共有n個星球,編號為1 n。其中的一些星球決定組成聯盟,以方便相互間的交流。但是,組成聯盟的首要條件就是交通條件。初始時,在這n個星球間有m條太空隧道。每條太空隧道連線兩個星球,使得它們能夠相互到達。若兩個星球屬於同乙個聯盟,則必須存在一條環形線路經過這兩個...
並查集 codevs 1188City戰爭
我靠我不會 fop zz教我了半天我才會的 首先n n的暴力就是每條線段從兩個點dfs 然後把兩個點的值乘起來 2 這就是一條的值了 我們在考慮權值不同的情況 我們只要把邊從小到大排序然後用並查集維護就好了 但是如果邊權有相同的情況就不好搞了 有乙個想法 就是我們同乙個權值的邊一起加 對於一條邊,加...
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...