field先初始化
for(int i=1;i<=N;i++)
field[i]=i;
int find(int x)
{
if(field[x]!=x)
field[x]=find(field[x]);
return field[x];
}
void make(int x,int y)//将x与y合并
{
int f1=find(x);
int f2=find(y);
if(f1!=f2)
field[f2]=f1;
}
void check(int x,int y)//检查x与y是否在同一个集合
{
int f1=find(x);
int f2=find(y);
if(f1==f2)
{
printf("SUCCESS\n");
}
else
printf("FALL\n");
}
或者find初始化为0
int find(int x)
{
if(field[x]==0)
return x;
field[x] = find(field[x]);
return field[x];
}