zoukankan      html  css  js  c++  java
  • 带有路径压缩和rank优化的并查集实现

    public class unionfind2 implements UF {
    
        int[] parent;
        int[] rank;
        
        public unionfind2(int n) {
            parent=new int[n];
            rank=new int[n];
            for(int i=0;i<parent.length;i++) {
                parent[i]=i;
                rank[i]=1;
            }
        }
        
        private int find(int i) {
            while(i!=parent[i]) {
                parent[i]=parent[parent[i]];
                i=parent[i];
            }
            return i;
        }
        @Override
        public boolean isConnected(int p, int q) {
            // TODO Auto-generated method stub
            return find(p)==find(q);
        }
    
        @Override
        public void  union(int p,int q) {
            int proot=find(p);
            int qroot=find(q);
            if(proot==qroot) return;
            else {
                parent[proot]=parent[qroot];
            }
        }
        
        public void  unionWithRank(int p, int q) {
            // TODO Auto-generated method stub
            int proot=find(p);
            int qroot=find(q);
            if(proot==qroot) return;
            
            if(rank[proot]<rank[qroot]) {
                parent[proot]=parent[qroot];
            }else if(rank[proot]>rank[qroot]){
                parent[qroot]=parent[proot];
            }else {
                parent[qroot]=parent[proot];
                rank[proot]+=1;
            }
        }
        
        
    
        @Override
        public int getSize() {
            // TODO Auto-generated method stub
            return parent.length;
        }
    
    }
  • 相关阅读:
    ubuntu18安装paddle的cpu版本错误
    博客园的推荐150名大牛的地址
    课堂翻译
    小组介绍
    Sunshine小组
    项目进程
    总结
    布置的开发项目
    一周总结
    每周学习
  • 原文地址:https://www.cnblogs.com/lshao/p/9667566.html
Copyright © 2011-2022 走看看