记录编号 67974 评测结果 AAAAAAAAAATT
题目名称 亲戚 最终得分 83
用户昵称 GravatarHobo 是否通过 未通过
代码语言 C++ 运行时间 2.014 s
提交时间 2013-08-15 21:50:12 内存使用 0.70 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#define ULL unsigned long long
#define MAXN 100000
using namespace std;
int N,M,Q,A[MAXN],T1,T2,I,J,ROOT;
 
int find(int x)
{
ROOT=x;
while (A[ROOT]!=ROOT) 
	ROOT=A[ROOT];
I=x;
/*
while (I!=ROOT)
	{
	J=A[I];
	A[I]=ROOT;
	I=J;
	}
*/
return ROOT;
}
 
void merge(int a,int b)
{
	if (a<b) A[b]=a;
	else A[a]=b;
}
 
void query(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);
cin>>N>>M;
memset(A,0,sizeof(A));
for (int i=0;i<M;i++) {scanf("%d%d",&T1,&T2);merge(T1,T2);}
for (int i=1;i<=N;i++) if (A[i]==0) A[i]=i;
cin>>Q;
for (int i=0;i<Q;i++) {scanf("%d%d",&T1,&T2);query(T1,T2);}
return 0;
}