1073 家族【解题报告】

#include<cstdio>
using namespace std;
const int maxn=5005;
int n,m,p,fa[maxn];
int find(int t)
{
	if(fa[t]==t) return t;
	return fa[t]=find(fa[t]);
}
int main()
{
	int x,y;
	scanf("%d%d%d",&n,&m,&p);
	for(int i=1;i<=n;i++) fa[i]=i;

	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		int fx=find(x);
		int fy=find(y);
		if(fx!=fy) fa[fy]=fx;
	}
	for(int i=1;i<=p;i++)
	{
		scanf("%d%d",&x,&y);
		int fx=find(x);
		int fy=find(y);
		if(fx==fy) printf("Yes\n");
		else printf("No\n");
	}

	return 0;
}

你可能感兴趣的:(并查集)