[省选] [最小生成树] [HLOI2016] 农场修路

问题描述 Description

小明是一个快乐的农场主,他有 N N N个农场,编号从 1 1 1 N N N,因为每个农场距离很远,现在他想修一些路使得任意两个农场都有道路能够到达。设计师给出了 N N N个农场由 M M M条公路相连的设计图,小明希望修的道路尽可能的少并且在修完的所有道路中最长的路程和最短的路程之间差值最小。

输入 Input

第一行给出 N , M N,M N,M
接下来 M M M行,每一行包含三个整数: u , v , c u,v,c u,v,c,表示农场 u u u和农场 v v v之间有一条路可以互达,路程 c c c
保证无重边,无自环, 0 < c ≤ 1 0 7 0\lt c\le 10^7 0<c107

输出 Output

输出一行包括一个整数,表示在修完的所有道路中最长的路程和最短的路程之间的最小差值。如果不能实现任意两个农场都有道路能够互达,输出 − 1 -1 1

样例输入 Sample Input

3 3
1 2 1
1 3 2
2 3 3

样例输出 Sample Output

1

限制 Limits

对于 30 % 30\% 30%的数据有 2 ≤ N ≤ 20 2\le N\le 20 2N20
对于 60 % 60\% 60%的数据有 2 ≤ N ≤ 50 2\le N\le 50 2N50
对于 100 % 100\% 100%的数据有 2 ≤ N ≤ 100 , 0 ≤ M ≤ N × ( N − 1 ) 2 2\le N\le 100,0\le M\le \frac{N\times (N-1)}{2} 2N100,0M2N×(N1)

黑历史题,详见UVa1395 苗条的生成树。
因为当最小边确定时,最小生成树唯一确定,所以枚举所有最小边,生成最小生成树,然后比较答案,选择最优解。
时间 O ( m log ⁡ 2 m + m n ) O(m\log_2 m+mn) O(mlog2m+mn)
我也不知道为什么要开 5 s 5s 5s
Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值