```cpp
#include<bits/stdc++.h>
using namespace std;
int n, m, q, x, y, r1, r2;
int father[5001];
int find(int x){
if(father[x] != x) x = find(father[x]);
return x;
}
void unionn(int r1, int r2){
father[r2] = r1;
}
int main(){
cin >> n >> m >> q;
for(int i = 1; i <= n; i++){
father[i] = i;
}
for(int i = 1; i <= m; i++){
cin >> x >> y;
r1 = find(x);
r2 = find(y);
if(r1 != r2) unionn(r1, r2);
}
for(int i = 1; i <= q; i++){
cin >> x >> y;
if(find(x) == find(y)){
cout << "Yes" << endl;
}
cout << "No" << endl;
}
return 0;
}
```
by 正式AFO @ 2018-08-22 22:48:50
这样也是20呀
by 正式AFO @ 2018-08-22 22:49:12
人生图论模板第一题,比最短路径好些,学者还欠费功夫,加油。
by 正式AFO @ 2018-08-23 22:01:26