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;
        }
    
    }
  • 相关阅读:
    Git的环境搭建
    AmazeUI HTML元素
    AmazeUI布局
    AmazeUI基本样式
    Bash简介
    Linux下拷贝目录和删除
    linux下的定时任务
    缓存
    隔离
    DEDECMS使用SQL命令批量替换语句
  • 原文地址:https://www.cnblogs.com/lshao/p/9667566.html
Copyright © 2011-2022 走看看