模板题怎么解释???
#include<stdio.h>
int N,M;
int data[20000];
int fa[20000];
//模板开始
int unfind(int x)
{
if(fa[x]==-1)fa[x]=x;
if(fa[x]==x) {return x;}
else {
fa[x]=unfind(fa[x]);//压缩路径
return fa[x];
}
}
void unionn(int x,int y)
{
int xx=unfind(x);
int yy=unfind(y);
//printf("fa_x=%d fa_y=%d fa[fa_x]=%d\n",xx,yy,fa[xx]);
fa[xx]=yy;
}
//模板结束
int find(int x,int y)
{
if(unfind(x)==unfind(y)&&fa[x]!=-1&&fa[y]!=-1) return 1;
else return 0;
}
main()
{
scanf("%d%d",&N,&M);
for(int i=0;i<20000;i++)
{
fa[i]=-1;
}
for(int i=0;i<M;i++)
{
int z,x,y;
scanf("%d%d%d",&z,&x,&y);
if(z==1){ unionn(x,y);}
else{if(find(x,y)) printf("Y\n");
else printf("N\n");
}
for(int i=1;i<5;i++)
{
printf("%d's fa[%d]=%d\n",i,i,fa[i]);
}
}
}