Java 地铁修建

来源:互联网 发布:mac版本的网络游戏 编辑:程序博客网 时间:2024/04/28 01:24
package test;import java.util.Collection;import java.util.Collections;import java.util.Comparator;import java.util.LinkedList;import java.util.List;import java.util.Scanner;class node {    int x, y, z;}public class Main {    static int[] p = new int[100010];    static int n, m;    static LinkedList<node> list = new LinkedList<node>();    static int find(int x){        if(p[x]==x){            return x;//若x自己就是祖先结点,返回他自己        }        else{            int y=find(p[x]);//层层递归找到x的祖先结点,并且将它作为祖先结点的子节点            p[x]=y;            return y;        }    }    static void union_p(int x,int y){        if(x==y){            return ;        }        p[x] = y;//y成为x的父节点    }    public static void main(String[] args) {        Scanner in =new Scanner(System.in);        int x,y,z=0;        n = in.nextInt();        m = in.nextInt();        for(int i=0;i<m;i++){            node node1 = new node();            node1.x=in.nextInt();            node1.y=in.nextInt();            node1.z=in.nextInt();            list.add(node1);        }        Collections.sort(list, new Comparator<node>() {            @Override            public int compare(node n1, node n2) {                if (n1.z >= n2.z) {                    return 1;                } else {                    return -1;                 }            }        });        for(int i=1;i<=n;i++){            p[i]=i;        }        int i = 0;        for(node s:list){            x = s.x;            y = s.y;            z = s.z;            int xf = find(x);            int yf = find(y);            union_p(xf,yf);            if(find(1)==find(n)){                break;            }        }        System.out.println(z);    }}
原创粉丝点击