记录编号 226421 评测结果 AAAAAAAAAAAA
题目名称 亲戚 最终得分 100
用户昵称 GravatarHzoi_Go灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.156 s
提交时间 2016-02-18 06:36:02 内存使用 4.13 MiB
显示代码纯文本
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;
const int maxn=1000000;
int n,m,q;
int father[maxn];
void Init();
int Findroot(int);
void Union(int,int);
int main()
{
	freopen("relations.in","r",stdin);
	freopen("relations.out","w",stdout);
	Init();
	return 0;
}
void Init()
{
	memset(father,0,sizeof(father));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		father[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		int rx=Findroot(x),ry=Findroot(y);
		if(rx==ry)continue;
		else Union(rx,ry);
	}
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		if(Findroot(x)==Findroot(y))printf("Yes\n");
		else cout<<"No"<<endl;
	}
}
void Union(int x,int y)
{
	father[x]=y;
}
int Findroot(int x)
{
	if(father[x]!=x)
	{
		father[x]=Findroot(father[x]);
	}
	return father[x];
}