#include <bits/stdc++.h>
using namespace std;
int fa[50005];
int find(int a)
{
if(a==fa[a])
return a;
else return fa[a]=find(fa[a]);
}
void join(int a,int b)
{
int f1=find(a),f2=find(b);
if(f1==f2)
return;
else fa[f1]=f2;
}
int main()
{
int n,m,q,x,y;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
if(find(x)!=find(y))
join(x,y);
}
scanf("%d",&q);
for(int i=1;i<=q;i++)
{
scanf("%d%d",&x,&y);
if(find(x)==find(y))
printf("Yes\n");
else printf("No\n");
}
return 0;
}
错误样例(下载的)
输入
10 20 10
10 5
5 6
2 9
4 2
4 9
8 5
4 6
5 1
9 1
5 1
6 5
6 1
3 10
8 9
4 1
2 6
2 9
4 9
3 7
1 3
9 4
6 8
8 3
3 8
8 3
8 10
3 2
8 10
3 1
1 2
输出
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes