并查集的按秩合并.路径压缩.和启发式合并

日后慢慢填坑

1.按秩合并,秩就是树高,若小的是父亲大的是儿子,则总树高不优秀,反之不错

void init(int n){
    for(int i=0;i<n;i++)
    fa[i]=i,rank[i]=0;
}
void unionn(int x,int y){
    xx=find(x);
    yy=find(y);
    if(xx==yy) return;
    if(rank[x]<rank[y])
       fa[x]=y;//秩小的父亲是秩大的,使得树的总高较小
    else if(x==y){
        fa[y]=x;rank[x]++;} 
    else fa[y]=x;
} 

猜你喜欢

转载自www.cnblogs.com/asdic/p/9586180.html
今日推荐