码迷,mamicode.com
首页 > 其他好文 > 详细

Algs4-1.5-加仅quick-union

时间:2018-10-26 10:37:48      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:sem   class   nio   print   rgs   lse   []   oid   ring   

public class WeightedQuickUnionUF
{
    private int[] id;
    private int[] sz;
    private int count;
    public WeightedQuickUnionUF(int N)
    {
        count=N;
        id=new int[N];
        for (int i=0;i<N;i++)
            id[i]=i;
        //
        sz=new int[N];
        for (int i=0;i<N;i++)
            sz[i]=1;
        //

    }
   
     public int count()
     {return count;}
    
      boolean connected(int p,int q)
      {return find(p)==find(q);}
    
      public int find(int p)
      {
          while(p!=id[p]) p=id[p];
          return p;
      }
      
    
      public void union(int p,int q)
      {
          int i=find(p);
          int j=find(q);
          if(i==j) return;
          if(sz[i]<sz[j])
          {
              id[i]=j;
              sz[j]=sz[j]+sz[i];
           }
          else
          {
              id[j]=i;
              sz[i]=sz[i]+sz[j];
          }
          count--;
          //
      }
      
       public static void main(String[] qrgs)
       {
           int N=StdIn.readInt();
           WeightedQuickUnionUF uf=new WeightedQuickUnionUF(N);
           while (!StdIn.isEmpty())
           {
               int p=StdIn.readInt();
               int q=StdIn.readInt();
               if(uf.connected(p,q)) continue;
                StdOut.printf("p=%d q=%d",p,q);
               uf.union(p,q);
            }//end while
        }//end main
}//end class

Algs4-1.5-加仅quick-union

标签:sem   class   nio   print   rgs   lse   []   oid   ring   

原文地址:https://www.cnblogs.com/longjin2018/p/9854645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!