P1551亲戚

一、题目描述

  

 

 

 

 二、题目分析

  很容易看出来这是并查集模板题

三、代码实现

  

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int a[10000];
 4 int find(int u)
 5 {
 6     if(u == a[u])
 7         return a[u];
 8     a[u] = find(a[u]);
 9     return a[u];
10 }
11 void merge(int n,int m)
12 {
13     int t1,t2;
14     t1 = find(n);
15     t2 = find(m);
16     a[t1] = t2;
17 }
18 int main()
19 {
20     int n,m,p;
21     cin >> n >> m >> p;
22     for(int i = 1;i <= 5000;i++)
23         a[i] = i;
24     for(int i = 1;i <= m;i++){
25         int l,r;
26         cin >> l >> r;
27         merge(l,r);
28     }
29     for(int i = 1;i <= p;i++){
30         int l,r;
31         cin >> l >> r;
32         if(find(l) == find(r))
33             cout << "Yes" << endl;
34         else 
35             cout << "No" << endl;
36     }
37     return 0;
38 }

 

posted @ 2022-01-20 20:10  scannerkk  阅读(45)  评论(0)    收藏  举报