RE求调
查看原帖
RE求调
552610
__Shine__楼主2023/6/23 16:03
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z;
int f[10010],cnt[10010];
int Find(int x)
{
	if(x==f[x]) return x;
	else f[x]=Find(f[x]);
}
int Merge(int x,int y)
{
	int fx=Find(x),fy=Find(y);
	if(cnt[fx]<cnt[fy])
	{
		cnt[fy]+=cnt[fx];
		f[fx]=fy;
	}else{
		cnt[fx]+=cnt[fy];
		f[fy]=fx;
	}
}
void init(int n)
{
	for(int i=1;i<=n;i++)
		f[i]=i,cnt[i]=1;
}
int main()
{
	cin>>n>>m;
	init(n);
	while(m--)
	{
		cin>>z>>x>>y;
		if(z==1)
			Merge(x,y);
		else
			if(Find(x)==Find(y))
				cout<<"Y\n";
			else
				cout<<"N\n";
	}
	return 0;
}
2023/6/23 16:03
加载中...