这算是一道非常简单的并查集入门题了 (模板题)
只需要预处理一下输入的数就好了。
无解释
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,t,f[10100];
int z,x,y;
int find(int cha)
{
if(f[cha]==cha)
return cha;
return f[cha]=find(f[cha]);
}
int main()
{
cin>>n>>m>>t;
for(int i=1; i<=n; i++)
f[i]=i;
for(int i=1; i<=m; i++)
{
cin>>x>>y;
f[find(x)]=find(y);
}
for(int i=1; i<=t; i++)
{
cin>>x>>y;
if(find(x)==find(y))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}