并查集

来源:互联网 发布:心知天气 融资 编辑:程序博客网 时间:2024/06/04 17:48

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");}elseprintf("FALL\n");}

或者find初始化为0

int find(int x)    {        if(field[x]==0)            return x;         field[x] = find(field[x]);           return field[x];         }    



0 0