/******************************************************************************
 *  Name:    
 *  NetID:   
 *  Precept: 
 *
 *  Partner Name:    N/A
 *  Partner NetID:   N/A
 *  Partner Precept: N/A
 * 
 *  Operating system:
 *  Compiler:
 *  Text editor / IDE:
 *
 *  Have you taken (part of) this course before:
 *  Have you taken (part of) the Coursera course Algorithm, Part I:
 *
 *  Hours to complete assignment (optional):
 * 
 *  to run the code > java UFExample2 N T  (where N is the data size and 
 *                                          T is the trials)
 ******************************************************************************/
import edu.princeton.cs.algs4.WeightedQuickUnionUF;
import edu.princeton.cs.algs4.Stopwatch;
import edu.princeton.cs.algs4.StdRandom;
  
public class UFExample2 {
    public static void main(String[] args) {        
     int N = Integer.parseInt(args[0]); // data size
     int T = Integer.parseInt(args[1]); // trials  
     double count = 0;
     for (int k=1; k<=T; k++) {        
        Stopwatch Clock = new Stopwatch();
        WeightedQuickUnionUF UF1 = new WeightedQuickUnionUF(N);
        while (true) {
           int i = StdRandom.uniform(N);
           int j = StdRandom.uniform(N);
           if (!UF1.connected(i,j)){
              UF1.union(i,j);
           }
           if (UF1.connected(0,N-1)) {
             // some message
             break;
           }
        }  
        count += Clock.elapsedTime();
        System.out.println("Trial " + k + " " + Clock.elapsedTime());
      }
      System.out.println( "N=" + N + " average time: " + String.format("%.2g%n", count/(1.0*T)));
    }
}