模版算法
#include<iostream>
using namespace std;
int f[1000001];
string ans[100001];
int fi(int x){
if(f[x]==x){
return x;
}
else{
return fi(f[x]);
}
}
void hb(int x,int y){
int xx=fi(x);
int yy=fi(y);
if(xx!=yy){
f[xx]=yy;
}
return;
}
int main(){
int n,m,p,x,y,a,b;
cin>>n>>m>>p;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=m;i++){
cin>>x>>y;
hb(x,y);
}
for(int i=1;i<=p;i++){
cin>>x>>y;
a=fi(x);
b=fi(y);
if(a==b){
ans[i]="Yes";
}
else{
ans[i]="No";
}
}
for(int i=1;i<=p;i++){
cout<<ans[i]<<endl;
}
return 0;
}
模版练习题推荐
洛谷
Libre OJ
SPOJ