并查集

来源:互联网 发布:黔马网络 编辑:程序博客网 时间:2024/05/21 10:54

              并查集

/**** **** **** **** **** ****
*    Function Name :        
并查集

*    Description :               集合操作,, ,判断
**** **** **** **** **** ****/
 
const int Max=1000;
typedef int ElemType;

int Parent[Max],Rank[Max];

int Find(int x)
{
    int temp = x, root, w;
    //搜寻根节点
    while(Parent[x]!=0)     x=Parent[x];
    root=x;
    x=temp;
     //压缩路径
    while(Parent[x]!=0) {
        w=Parent[x];
        Parent[x]=root;
        x=w;
    }
    return root;
}

int Union(int x,int y)
{
    int u, v, root;
    u=Find(x);
    v=Find(y);
    if(Rank[u] <= Rank[v]) {
        root = Parent[u] = v;
        if(Rank[u] == Rank[v])     Rank[v]++;
    }
    else     root=Parent[v]=u;
    return root;
}

0 0