P1551 亲戚

这里是题面啊~

这道题我就不多说了,基本(好吧没有基本)就是一道模板题,读入+并查集+输出,完美结束

 1 #include<set>
 2 #include<map>
 3 #include<list>
 4 #include<queue>
 5 #include<stack>
 6 #include<string>
 7 #include<cmath>
 8 #include<ctime>
 9 #include<vector>
10 #include<bitset>
11 #include<memory>
12 #include<utility>
13 #include<cstdio>
14 #include<sstream>
15 #include<iostream>
16 #include<cstdlib>
17 #include<cstring>
18 #include<algorithm>
19 using namespace std;
20 
21 int n,m,p;
22 int zy[5005];
23 
24 int find(int z){//查找该集合的代表元
25     if(z==zy[z]){
26         return z;
27     }
28     return zy[z]=find(zy[z]);
29 }
30 
31 int main(){
32     scanf("%d%d%d",&n,&m,&p);
33     for(int i=1;i<=n;i++){
34         zy[i]=i;
35     }
36     for(int i=1;i<=m;i++){
37         int z,y;
38         scanf("%d%d",&z,&y);
39         zy[find(z)]=zy[find(y)];//合并
40     }
41     for(int i=1;i<=p;i++){
42         int z,y;
43         scanf("%d%d",&z,&y);
44         if(find(z)==find(y)){//在同一集合中
45             printf("Yes\n");
46         }
47         else{
48             printf("No\n");
49         }
50     }
51     return 0;
52 }

嗯既然水题那也没什么好讲的,就这样子了

猜你喜欢

转载自www.cnblogs.com/hahaha2124652975/p/11130057.html