为什么爆0求助
  • 板块P1551 亲戚
  • 楼主x1489631649
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/6/15 13:25
  • 上次更新2024/6/15 16:07:07
查看原帖
为什么爆0求助
780505
x1489631649楼主2024/6/15 13:25
#include <bits/stdc++.h>
using namespace std;
int fa[50005];
int find(int a)
{
	if(a==fa[a])
		return a;
	else return fa[a]=find(fa[a]);
}
void join(int a,int b)
{
	int f1=find(a),f2=find(b);
	if(f1==f2)
		return;
	else fa[f1]=f2;
}
int main()
{
	int	n,m,q,x,y;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		fa[i]=i;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		if(find(x)!=find(y))
			join(x,y);
	}
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		scanf("%d%d",&x,&y);
		if(find(x)==find(y))
			printf("Yes\n");
		else printf("No\n");
	} 
	return 0;
}

错误样例(下载的)

输入
10 20 10
10 5
5 6
2 9
4 2
4 9
8 5
4 6
5 1
9 1
5 1
6 5
6 1
3 10
8 9
4 1
2 6
2 9
4 9
3 7
1 3
9 4
6 8
8 3
3 8
8 3
8 10
3 2
8 10
3 1
1 2
输出
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

2024/6/15 13:25
加载中...