并查集模板

    xiaoxiao2026-02-25  13

    int par[MAX_N],rank[MAX_N];//父亲,树的高度 //初始化n个数 void init(int n) {     for(int i=0;i<n;i++)     {         par[i]=i;         rank[i]=0;     } } //查询书的根 int find(int x) {     if(par[x]==x)return x;     else return find(par[x]); } //合并x和y所属的集合 void unite(int x,int y) {     x=find(x);     y=find(y);     if(x==y)return;     if(rank[x]<rank[y])     {         par[x]=y;     }     else      {         par[y]=x;         if(rank[x]=rank[y])rank[x]++;     } } //判断x和y是否属于同一个集合 bool same(int x,int y) {     return find(x)==find(y); }
    转载请注明原文地址: https://ju.6miu.com/read-1307356.html
    最新回复(0)