JAVA 结构体sort举例

来源:互联网 发布:网络的负面影响规点 编辑:程序博客网 时间:2024/06/03 17:43

HDU 1865 最小生成树

import java.awt.List;import java.io.BufferedInputStream;import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class Main {    public static class Node implements Comparable<Node> {        int x, y, val;        Node(int x, int y, int val) {            this.x = x;            this.y = y;            this.val = val;        }        @Override        public int compareTo(Node o) {            // TODO Auto-generated method stub            if(val < o.val) return -1;            else if(o.val < val) return 1;            else return 0;        }    }    static int []fa = new int[110];    public static int find(int x) {        if(fa[x] == x) return x;        fa[x] = find(fa[x]);        return fa[x];    }    public static void init(int m) {        for(int i = 1; i <= m; ++ i)            fa[i] = i;    }    public static void main(String[] args) {        Scanner cin = new Scanner(new BufferedInputStream(System.in));        while(cin.hasNext()) {            int n = cin.nextInt();            int m = cin.nextInt();            if(n == 0) break;            init(m);            ArrayList<Node>list = new ArrayList<Node>();            for(int i = 0; i < n; ++ i) {                int x = cin.nextInt();                int y = cin.nextInt();                int val = cin.nextInt();                list.add(new Node(x, y, val));            }            Collections.sort(list);            long ans = 0;            int cnt = 0;            for(int i = 0; i < n; ++ i) {                int xx = find(list.get(i).x);                int yy = find(list.get(i).y);                if(xx != yy) {                    cnt ++;                    fa[xx] = yy;                    ans += list.get(i).val;                }            }            if(cnt == m - 1) System.out.println(ans);            else System.out.println("?");        }    }}   /*3 32 3 41 2 11 3 2*/