编写find函数
find函数赋值初值
合并操作为f[find(t2)]=find(t3),查找操作为if(find(p2)==find(p3))
代码
#include <bits/stdc++.h>
using namespace std;
int f[10010];
int find(int k)
{
if(f[k]==k)
return k;
return f[k]=find(f[k]);
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
f[i]=i;
while(m--)
{
int t1,t2,t3;
cin>>t1>>t2>>t3;
if(t1==1)
f[find(t2)]=find(t3);
else
{
if(find(t2)==find(t3))
cout<<"Y
";
else
cout<<"N
";
}
}
}
一句话find函数
int find(int k)
{
return f[k]==k?k:f[k]=find(f[k]);
}