日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

jzoj1882-亲戚【并查集】

發布時間:2023/12/3 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jzoj1882-亲戚【并查集】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

有n個人,已知m種親戚關系,如果A和B是親戚,B和C也是親戚,那么A和C也是親戚。接下來求一些人是否為親戚。

Input

輸入由兩部分組成。
第一部分以N,M開始。N為問題涉及的人的個數,M表示已經知道M對親戚關1<=N,M<=100000,接下來M行,每行有兩個數ai, bi,表示已知ai和bi是親戚。這些人的編號為1,2,3,…, N。接下來輸入一個整數P(1<=P<=100000),表示有P次詢問,接下來P行,每行為ci, di,表示詢問ci和di是否為親戚。

Output

輸出一行:若ci和di為親戚,則輸出“Yes”,否則輸出“No”。

Sample Input

10 7
2 4
5 7
1 3
8 9
1 2
5 6
2 3
3
3 4
7 10
8 9

Sample Output

Yes
No
Yes

解題思路

并查集不解釋

代碼

#include<cstdio> using namespace std; int x,y,father[100001],n,m,p; int find(int x)//查找 {if (x!=father[x]) return father[x]=find(father[x]);else return x; } void d(int x,int y) {int fa=find(x),fb=find(y);if (fa<fb) father[fb]=fa;else father[fa]=fb; } int main() {scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) father[i]=i;for (int i=1;i<=m;i++){scanf("%d%d",&x,&y);d(x,y);//合并}scanf("%d",&p);for (int i=1;i<=p;i++){scanf("%d%d",&x,&y);if (find(x)!=find(y)) printf("No\n");//詢問else printf("Yes\n");} }

總結

以上是生活随笔為你收集整理的jzoj1882-亲戚【并查集】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。