// Option 2 public void mst() { edgeTo = new Route[numCities]; distTo = new int[numCities]; marked = new boolean[numCities]; pq = new IndexMinPQ<Integer>(numCities); System.out.println("MINIMUM SPANNING TREE"); System.out.print("---------------------"); for (int i = 0; i < numCities; i++) { distTo[i] = Integer.MAX_VALUE; } for (int i = 0; i < numCities; i++) { // run from each vertex to find if (!marked[i]) { // minimum spanning forest StringBuilder sb = new StringBuilder(); prim(i, sb); if (sb.length() > 0) { // Don't print if no routes in CC System.out.println("\nConnected Component:"); System.out.print(sb); } } } }