#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,m,f[10010],pl p2 p3;
int find(int k){if(f[k]==k)return k;
return f[k]=find(f[k]);
int main()
cin>>n>>m;
for(i-l;i<=n;i++)f[i] i;
for(i=l;i<=m;i++){cin>>p1>>p2>>p3:
if(p1--1)f[find (p2)]=find(p3):
if(p1--2)if(find(p2)--find(p3))printf("Yin");
else
printf("N\n"):
return 0;
该算法中pl的作用是确定操作类型。
去掉 for(i=1;i<=n;i++)f[i]=i;对该算法没有影响
输人22112212输出为Y
输人21212输出为N
该算法时间复杂度为
O(m log n)
O(nm)
0(n+m)
0(nm')
把retumf[k]=find(f[k]);改成 return fnd(f[k]);最差时间复杂度为
0(mlogn)
0(nm)
0(n+m)
0(nm°)
发表评论