#include
using namespace std;
int n ;
int parent[100];
void ufset() //初始化
int find(int x) //返回第x節點所屬集合的根結點
return i;
}void union(int r1,int r2) //將兩個不同集合的元素進行合併,使兩個集合中任兩個元素都連通
else
}int main()
for( i = 0 ; i < p ;i++)
int find(int x)
return r;
}
void unionone(int a,int b)
int main()
cin>>q;
for(i=1;i<=q;i++)
{cin>>c>>d;
if(find(c)==find(d))
cout<<"yes"<
/* 題目: 親戚(relations)
或許你並不知道,你的某個朋友是你的親戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孫子。如果能得到完整的家譜,判斷兩個人是否親戚應該是可行的,但如果兩個人的最近公共祖先與他們相隔好幾代,使得家譜十分龐大,那麼檢驗親戚關係實非人力所能及.在這種情況下,最好的幫手就是計算機。
為了將問題簡化,你將得到一些親戚關係的資訊,如同marry和tom是親戚,tom和b en是親戚,等等。從這些資訊中,你可以推出marry和ben是親戚。請寫乙個程式,對於我們的關心的親戚關係的提問,以最快的速度給出答案。
參考輸入輸出格式 輸入由兩部分組成。
第一部分以n,m開始。n為問題涉及的人的個數(1 ≤ n ≤ 20000)。這些人的編號為1,2,3,…,n。下面有m行(1 ≤ m ≤ 1000000),每行有兩個數ai, bi,表示已知ai和bi是親戚.
第二部分以q開始。以下q行有q個詢問(1 ≤ q ≤ 1 000 000),每行為ci, di,表示詢問ci和di是否為親戚。
對於每個詢問ci, di,若ci和di為親戚,則輸出yes,否則輸出no。
樣例輸入與輸出
輸入relation.in
10 7
2 45 7
1 38 9
1 25 6
2 33
3 47 10
8 9輸出relation.out
yesno
yes*/
親戚 並查集
若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的親戚都是y的親戚,y的親戚也都是x的親戚。第一行 三個整數n,m,p,n 5000,m 5000,...
並查集(親戚)
問題描述 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的親戚都是y的親戚,y的親戚也都是x的親戚。人數 5000,親戚關係 5000,詢問親戚關...
並查集 親戚
一 題目描述 親戚 relation.cpp 時間限制 1 sec 記憶體限制 64 mb 題目描述 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易。現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。我們規定 如果x和y是親戚,y和z是親戚,那麼x和z也是親戚 如果x,y是親...