Esempio n. 1
0
  public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String line = null;
    while ((line = reader.readLine()) != null) {
      StringTokenizer token = new StringTokenizer(line);
      int n = Integer.parseInt(token.nextToken());
      int m = Integer.parseInt(token.nextToken());

      if (n == 0 && m == 0) {
        break;
      }

      for (int i = 0; i < n; i++) {
        parentRank[i][0] = i;
        parentRank[i][1] = 0;
      }

      edgeList.clear();

      for (int i = 0; i < m; i++) {
        token = new StringTokenizer(reader.readLine());
        int x = Integer.parseInt(token.nextToken());
        int y = Integer.parseInt(token.nextToken());
        int w = Integer.parseInt(token.nextToken());

        edgeList.add(new Edge(x, y, w));
      }

      List<Integer> maxWeights = new ArrayList<Integer>();

      Collections.sort(edgeList);

      int maxWeight = 0;

      for (int i = 0; i < edgeList.size(); i++) {
        Edge edge = edgeList.get(i);
        int x = find(edge.a);
        int y = find(edge.b);

        if (x != y) {
          maxWeight = Math.max(maxWeight, edge.weight);
          union(x, y);
        } else {
          maxWeights.add(Math.max(maxWeight, edge.weight));
        }
      }

      if (maxWeights.size() > 0) {
        for (int i = 0; i < maxWeights.size(); i++) {
          if (i + 1 != maxWeights.size()) {
            System.out.print(maxWeights.get(i) + " ");
          } else {
            System.out.print(maxWeights.get(i));
          }
        }

        System.out.println();
      } else {
        System.out.println("forest");
      }
    }
  }