java地铁线路规划,AcWing 3245. 地铁修建java

这个做法csp官网只能95

import java.util.Arrays;

import java.util.Comparator;

import java.util.Scanner;

public class Main

{

private static int N=100010,M=200010;

private static int[] p=new int[N];

private static int n,m;

static Comparator cmp=new Comparator()

{

//按照时间花费从小到大排序

@Override

public int compare(Node o1, Node o2)

{

return o1.c-o2.c;

}

};

public static void main(String[] args)

{

Scanner scan=new Scanner(System.in);

n=scan.nextInt();

m=scan.nextInt();

for(int i=1;i<=n;i++)

p[i]=i;

Node[] nodes=new Node[m];

for(int i=0;i

{

int a=scan.nextInt();

int b=scan.nextInt();

int c=scan.nextInt();

nodes[i]=new Node(a,b,c);

}

Arrays.sort(nodes,cmp);

int res=0;

for(int i=0;i

{

int a=nodes[i].a,b=nodes[i].b,c=nodes[i].c;

int pa=find(a),pb=find(b);

if(pa!=pb)

{

p[pa]=pb;

res=Math.max(res, c);//记录下时间最大值

if(find(1)==find(n))//如果1号和n号联通后就直接退出了

break;

}

}

System.out.println(res);

scan.close();

}

private static int find(int a)

{

if(p[a]!=a)

p[a]=find(p[a]);

return p[a];

}

private static class Node

{

private int a;

private int b;

private int c;

public Node(int a,int b,int c)

{

this.a=a;

this.b=b;

this.c=c;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值