zoukankan      html  css  js  c++  java
  • Algs4-1.5.7实现QuickFindUF类和QuickUnionUF类

    1.5.7分别为quick-find算法和quick-union算法实现QuickFindUF类和QuickUnionUF类。

    public class QuickFindUF

    {

        private int[] id;

        private int count;

        public QuickFindUF(int N)

        {

            count=N;

            id=new int[N];

            for (int i=0;i<N;i++)

                 id[i]=i;

        }

       

        public int count()

        {return count;}

        

         boolean connected(int p,int q)

         {return find(p)==find(q);}

     

         public int find(int p)

         {return id[p];}

          

          public  void union(int p,int q)

           {

              int pID=find(p);

              int qID=find(q);

              if (pID==qID) return;

              for (int i=0;i<id.length;i++)

                  if(id[i]==pID) id[i]=qID;

              count--;

           }

     

        

           public static void main(String[] qrgs)

           {

               int N=StdIn.readInt();

               QuickFindUF uf=new QuickFindUF(N);

               while (!StdIn.isEmpty())

               {

                   int p=StdIn.readInt();

                   int q=StdIn.readInt();

                   if(uf.connected(p,q)) continue;

                   StdOut.println(p+ " " +q);

                   uf.union(p,q);

                }//end while

            }//end main

    }//end class

     

    public class QuickUnionUF

    {

        private int[] id;

        private int count;

        public QuickUnionUF(int N)

        {

            count=N;

            id=new int[N];

            for (int i=0;i<N;i++)

                id[i]=i;

       }

       

       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 pRoot=find(p);

              int qRoot=find(q);

              if(pRoot==qRoot) return;

              id[pRoot]=qRoot;

              count--;

          }

     

           public static void main(String[] qrgs)

           {

               int N=StdIn.readInt();

               QuickUnionUF uf=new QuickUnionUF(N);

               while (!StdIn.isEmpty())

               {

                   int p=StdIn.readInt();

                   int q=StdIn.readInt();

                   if(uf.connected(p,q)) continue;

                   StdOut.println(p+ " " +q);

                   uf.union(p,q);

                  

                }//end while

            }//end main

    }//end class

  • 相关阅读:
    VMware 中安装Centos
    go with go
    [APIO2012]派遣【左偏树】
    后缀自动机三·重复旋律6
    AC自动机(二次加强版)
    [HAOI2016]找相同字符【GSAM广义后缀自动机】
    吉司机线段树【学习笔记】
    [ZJOI2015]诸神眷顾的幻想乡【GSAM】
    广义后缀自动机(广义 SAM)【模板】
    Important Sisters【HDU-4694】【Dominator Tree】
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854703.html
Copyright © 2011-2022 走看看