private void drawGraph(QuickUnionUF qu) {
   int[] depth = new int[qu.getId().length];
   for (int i = 0; i < qu.getId().length; i++) {
     depth[i] = qu.getDepth(i);
   }
   for (int i = 0; i < depth.length; i++) {
     System.out.print(depth[i]);
     if (i != depth.length - 1) System.out.print(", ");
     else System.out.println();
   }
 }
 /**
  * Reads in a sequence of pairs of integers (between 0 and N-1) from standard input, where each
  * integer represents some object; if the objects are in different components, merge the two
  * components and print the pair to standard output.
  */
 public static void main(String[] args) {
   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;
     uf.union(p, q);
     StdOut.println(p + " " + q);
   }
   StdOut.println(uf.count() + " components");
 }
Example #3
0
 public static double TrialQuickUnionUF(int N) {
   Stopwatch watch = new Stopwatch();
   QuickUnionUF uf = new QuickUnionUF(N);
   for (int i = 0; i < N; i++) {
     int p = StdRandom.uniform(N);
     int q = StdRandom.uniform(N);
     if (!uf.connected(p, q)) {
       uf.union(p, q);
     }
   }
   double time = watch.elapsedTime();
   // printTree(uf);
   return time;
 }
 public Question3() {
   QuickUnionUF qu1 = new QuickUnionUF(10);
   QuickUnionUF qu2 = new QuickUnionUF(10);
   QuickUnionUF qu3 = new QuickUnionUF(10);
   QuickUnionUF qu4 = new QuickUnionUF(10);
   QuickUnionUF qu5 = new QuickUnionUF(10);
   qu1.setId(id[0]);
   qu2.setId(id[1]);
   qu3.setId(id[2]);
   qu4.setId(id[3]);
   qu5.setId(id[4]);
   drawGraph(qu1);
   // drawGraph(qu2);
   drawGraph(qu3);
   drawGraph(qu4);
   drawGraph(qu5);
 }