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 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}