并查集

#include
using namespace std;
int i,k,n,m,f[10010],p1,p2,p3;
int find(int k){
//路径压缩
if(f[k]k)return k;
return f[k]=find(f[k]);
}
int main()
{
scanf("%d%d%d",&n,&m);
for(i=1;i<=n;i++)
f[i]=i;
for(i=1;i<=m;i++){
scanf("%d%d%d",&p1,&p2,&p3);
if(p1
1)
f[find(p2)]=find(p3);
else
if(find(p2)==find(p3))
printf(“Y\n”);
else
printf(“N\n”);
}
return 0;
}

你可能感兴趣的:(并查集)