예제 #1
0
  /** @param args */
  public static void main(String[] args) {

    try {
      int N = StdIn.readInt();

      indexArray = new int[N];
      for (int i = 0; i < N; i++) {
        indexArray[i] = i;
      }

      UF uf = new WeightedQuickUnionUF(N);
      while (!StdIn.isEmpty()) {
        int p = StdIn.readInt();

        if (p == -1) {

          p = StdIn.readInt();
          int q = StdIn.readInt();

          StdOut.print(p + " and " + q + " are");
          if (!uf.connected(p, q)) {
            StdOut.print(" not");
          }
          StdOut.println(" connected.");

        } else {

          int q = StdIn.readInt();
          if (!uf.connected(p, q)) {

            uf.union(p, q);
            StdOut.println("connecting " + p + " " + q);
          }
        }
        printArray(indexArray);
        printArray(uf.idArray());
        printArray(uf.sizeArray());
        StdOut.println();
      }
    } catch (InputMismatchException e) {
      System.exit(0);
    }
  }