记录编号 303032 评测结果 AAAAAAAAAAAA
题目名称 亲戚 最终得分 100
用户昵称 GravatarNVIDIA 是否通过 通过
代码语言 C++ 运行时间 0.186 s
提交时间 2016-09-04 20:06:05 内存使用 0.33 MiB
显示代码纯文本
#include<cstdio>
int A[20020];
int find(int x){
	int root=x;
	while(A[root]!=root)root=A[root];
	int I=x,J;
	while(I!=root){
		J=A[I];
		A[I]=root;
		I=J;
	}
	return root;
}
void merge(int a,int b){
	if(A[a]<A[b]) A[b]=A[a];
	else A[a]=A[b];
}
void Output (int a,int b){
	if(find(a)==find(b)) printf("Yes\n");
	else printf("No\n");
}	
int main(){
	freopen("relations.in","r",stdin);
	freopen("relations.out","w",stdout);
	int M,N;
	scanf("%d%d",&N,&M);
	for(int i=1;i<=N;i++) A[i]=i;
	int a,b;
	for(int i=0;i<M;i++) {scanf("%d%d",&a,&b);merge(a,b);}
	int Q;
	scanf("%d",&Q);
	while(Q--){
		scanf("%d%d",&a,&b);
		Output(a,b);
	}
	return 0;
}