首先声明一下,我的并查集只限用于洛谷的前七个点,后三个点是超时的,我正在努力查找原因,如果有大佬发现问题所在,可以在评论区dd我,我一旦查出来的话,定会更新一篇的
#include<bits/stdc++.h>
using namespace std;
int n;
int m;
int fa[10001];
int find(int x)
{
if(fa[x]==x) return x;
else return find(fa[x]);
}
bool check(int x,int y)
{
x=find(x);
y=find(y);
if(x==y) return 1;
else return 0;
}
void unition(int x,int y)
{
x=find(x);
y=find(y);
fa[x]=y;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++)
{
int z;
int x;
int y;
cin>>z>>x>>y;
if(z==1)
{
unition(x,y);
}
else
{
if(check(x,y)==1) cout<<"Y"<<endl;
else cout<<"N"<<endl;
}
}
return 0;
}