hdu 1233 还是畅通工程(最小生成树)

来源:互联网 发布:java 类 继承 编辑:程序博客网 时间:2024/04/25 18:37

http://acm.hdu.edu.cn/showproblem.php?pid=1233

/*2011-9-14author:BearFly1990*/package acm.hdu.tests;import java.io.BufferedInputStream;import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class HDU_1233 {    private static final int N = 101;    private static Road[] roads = new Road[N*(N-1)/2];    private static int[] x = new int[N];    public static void main(String[] args) {        Scanner in = new Scanner(new BufferedInputStream(System.in));        int n;        while(in.hasNext()){            n = in.nextInt();            if(n == 0)break;            int m = n*(n-1)/2;            for(int i = 0; i <= n; i++){                x[i] = i;            }            for(int i = 0; i < m; i++){                int tempa = in.nextInt();                int tempb = in.nextInt();                int tempDis = in.nextInt();                roads[i] = new Road(tempa,tempb,tempDis);            }          Arrays.sort(roads,0,m,new RoadCompare());          int dis = 0;          int cnt = 0;          for(int i = 0; cnt < n-1 ; i++){              int a = find(roads[i].a);              int b = find(roads[i].b);              if( a != b){                  dis += roads[i].dis;                  x[a] = b;                  cnt++;              }          }          System.out.println(dis);        }    }    public  static int find(int a) {        int t,b = a;        while(a != x[a])            a = x[a];        while(b != a){            t = x[b];            x[b] = a;            b = t;        }        return a;    }    public static class Road{        int a,b,dis;        public Road(int a,int b,int dis){            this.a = a;            this.b = b;            this.dis = dis;        }    }    public static class RoadCompare implements Comparator<Road>{        @Override        public int compare(Road r1, Road r2) {            return r1.dis - r2.dis;        }            }}


原创粉丝点击