COGS[259] 亲戚
并查集模板。
// q.c
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int M=20000+10;
/***********************************************************************/
int f[M],dep[M];
int finds(int x) {
return f[x]==x?f[x]:f[x]=finds(f[x]);
}
void merge(int x,int y) {
if(dep[x]>dep[y]) { f[y]=x; return ; }
f[x]=y;
if(dep[x]==dep[y]) dep[y]++;
}
/***********************************************************************/
int main() {
freopen("relations.in","r",stdin);
freopen("relations.out","w",stdout);
int n,m,q,a,b;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) {
f[i]=i;
}
for(int i=1;i<=m;i++) {
scanf("%d%d",&a,&b);
a=finds(a);
b=finds(b);
if(a!=b) merge(a,b);
}
scanf("%d",&q);
for(int i=1;i<=q;i++) {
scanf("%d%d",&a,&b);
a=finds(a);
b=finds(b);
a==b?printf("Yes\n"):printf("No\n");
}
return 0;
}

浙公网安备 33010602011771号