JDOJ 1044 Span

https://neooj.com/oldoj/problem.php?id=1044

Description

  某国有N个村子,M条道路,为了实现“村村通工程”现在要”油漆”N-1条道路(因为某些人总是说该国所有的项目全是从国外进口来的,只是漆上本国的油漆罢了),因为“和谐”是此国最大的目标和追求,以致于对于最小造价什么的都不在乎了,只希望你所选出来的最长边与最短边的差越小越好。

Input

  第一行给出一个数字TOT,代表有多少组数据,Tot<=6   对于每组数据,首先给出N,M   下面M行,每行三个数a,b,c代表a村与b的村道路距离为c.

Output

  输出最小差值,如果无解输出”-1”.

Sample Input

1 4 5 1 2 3 1 3 5 1 4 6 2 4 6 3 4 7

Sample Output

1

HINT

【样例解释】   选择1-4,2-4,3-4这三条边. 【数据范围】   1:2 ≤ n ≤ 100 and 0 ≤ m ≤ n(n − 1)/2   2:每条边的权值小于等于10000   3:保证没有自环,没有重边

不要把这道题想象成最小生成树的练习题,虽然原理跟最小生成树很像,但是题目中明确要求不要求最小造价,所以我们的解决办法是,使用kruskal算法排序后,从小到大枚举每条边,每次都跑最小生成树,然后更新ans为最长边与最短边差的最小值。

Code:

#include<cstdio>
#include<algorithm>
using namespace std;
int fa[];
int cnt,n,m,tot;
int ans=;
struct rec
{
int x,y,z;
}e[];
bool cmp(rec a,rec b)
{
return a.z>b.z;
}
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main()
{
scanf("%d",&tot);
while(tot--)
{
ans=;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].z);
sort(e+,e+m+,cmp);
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
fa[j]=j;
cnt=;
for(int j=i;j<=m;j++)
{
int fx=find(e[j].x);
int fy=find(e[j].y);
if(fx!=fy)
{
fa[fx]=fy;
cnt++;
if(cnt==n-)
{
ans=min(ans,e[i].z-e[j].z);
break;
}
}
}
}
if(ans<)
printf("%d\n",ans);
else
printf("-1\n");
}
return ;
}

最新文章

  1. Android开发面试经——6.常见面试官提问Android题②(更新中...)
  2. WebDriverExtensionsByC#
  3. 8款超酷的HTML5 3D图片动画源码
  4. [原创]个人工具 - YE快速复制助手(YeFastcopyHelper)
  5. mongodb权威指南读书笔记
  6. C++中的对象数组
  7. 页面加载时,页面中DIV随之滑动出来;去掉页面滚动条
  8. java核心技术学习笔记之三程序设计结构
  9. vue学习笔记 概述(一)
  10. ADB——修改手机默认参数
  11. 图解HTTPS协议
  12. AI,大数据,复杂系统 最精 40本大书单
  13. swift - 本地通知2 - 啰嗦版
  14. css 图片文字居中
  15. Mongodb网络好文章
  16. IIS7.5 中启用rest服务,Delete、Put
  17. vb 读取指定路径文件名
  18. win10 U盘安装ubuntu16.04双系统
  19. 多线程中的synchronized小结
  20. word中怎么快速选中光标之前或之后的全部内容?

热门文章

  1. mysql数据库的创建问题
  2. arduino (3) 控制sim900A发送短信
  3. 使用mybatis动态where字句方法
  4. linux 用du查看硬盘信息
  5. 读取指定页面中的超链接-Python 3.7
  6. 如何自动生成 Entity Framework 的 Mapping 文件?
  7. 一个简单的利用 WebClient 异步下载的示例(三)
  8. 云原生生态周报 Vol.10 | 数据库能否运行在 K8s 当中?
  9. Java8新特性——Optional类的使用(有效的避免空指针异常)
  10. 永久清理git中的历史大文件