记录编号 224414 评测结果 AAAAAAAAAAAA
题目名称 亲戚 最终得分 100
用户昵称 GravatarHzoi_ 是否通过 通过
代码语言 C++ 运行时间 0.121 s
提交时间 2016-02-16 11:04:59 内存使用 0.39 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#define abs(x) (((x)>(0))?(x):(-x))
#define connected(x,y) ((findroot(x))==(findroot(y)))
#define merge(x,y) merger(node[x].prt,node[y].prt)
using namespace std;
struct tree{
	int prt/*,before,count*/;
	tree(){
		prt=/*before=count=*/0;
	}
}node[20010];
int findroot(int x){
	if(node[x].prt!=x){
		int r=findroot(node[x].prt);
		/*node[x].before+=node[node[x].prt].before;
		node[x].prt=r;*/
		node[x].prt=r;
	}
	return node[x].prt;
}
void merger(int rx,int ry){
	node[rx].prt=ry;
}
int n,m,q,a,b;
#define COGS
int main(){
#ifdef COGS
	FILE *fin,*fout;
	fin=fopen("relations.in","r");
	fout=fopen("relations.out","w");
#else
	#define fin stdin
	#define fout stdout
#endif
	for(int i=0;i<20010;i++)node[i].prt=i;
	fscanf(fin,"%d%d",&n,&m);
	for(int i=0;i<m;i++){
		fscanf(fin,"%d%d",&a,&b);
		if(!connected(a,b))merge(a,b);
	}
	fscanf(fin,"%d",&q);
	for(int i=0;i<q;i++){
		fscanf(fin,"%d%d",&a,&b);
		fprintf(fout,connected(a,b)?"Yes\n":"No\n");
	}
#ifdef COGS
	fclose(fin);fclose(fout);
#endif
	return 0;
}