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 ;
}

JDOJ 1044 Span的更多相关文章

  1. CSP-S 2019图论总结

    CSP-S 2019图论总结 一.最短路问题 模板 Floyd算法 void floyd() { memset(map,0x3f,sizeof(map)); for(int i=1;i<=n;i ...

  2. CSS之div和span标签

    div和span是非常重要的标签,div的语义是division"分割": span的语义就是span"范围.跨度". 这两个东西,都是最最重要的"盒 ...

  3. 如何改变span元素的宽度与高度

    内联元素:也称为行内元素,当多个行内元素连续排列时,他们会显示在一行里面. 内联元素的特性:本身是无法设置宽度和高度属性的,但是可以通过CSS样式来控制,达到我们想要的宽度和高度. span举例1: ...

  4. Android之TextView的样式类Span的使用详解

           Android中的TextView是个显示文字的的UI类,在现实中的需求中,文字有各式各样的样式,TextView本身没有属性去设置实现,我们可以通过Android提供的 Spannab ...

  5. BZOJ 1044 木棍分割 解题报告(二分+DP)

    来到机房刷了一道水(bian’tai)题.题目思想非常简单易懂(我的做法实际上参考了Evensgn 范学长,在此多谢范学长了) 题目摆上: 1044: [HAOI2008]木棍分割 Time Limi ...

  6. 火狐下多个span连在一起和换行写存在差异

    当父元素的宽度确定,多个span换行写,span加起来占的宽度比预设的大

  7. IE下a标签后面的span元素向右浮动后错位

    错误原因span放在了a标签之后 正确写法是放在之前 如下: <li><span>2016-07-29</span><a href="#" ...

  8. Jquery 关于span标签的取值赋值用法

    span是最简单的容器,可以当作一个形式标签,其取值赋值方法有别于一般的页面元素. //赋值 $("#spanid").html(value) //取值 $("#span ...

  9. div span

    无牵无挂,不带任何样式,因此经常使用div完成整体样式的构建,span完成细微样式的构建. div为块级元素,span为行内元素. 使用div完成显示区域的居中.左右浮动等,完成整体的样式布局,然后在 ...

随机推荐

  1. NOIP模拟赛 拓展

    题目描述 Description \(φ\) 函数是数论中非常常用的函数.对于正整数 \(x\) ,\(φ(x)\) 表示不超过 \(x\) 的所有正整数与 \(x\) 互质的个数. 现在我们对它进行 ...

  2. 在Azure DevOps Server中运行基于Spring Boot和Consul的微服务项目单元测试

    1 概述 谈到微服务架构体系,绕不开服务发现这个功能.服务发现机制是简化微服务配置.实现容灾.水平扩缩容.提高运维效率的重要方式.在服务发现工具中,Consul在部署和使用方面与容器结合的天衣无缝,成 ...

  3. WEB测试应该注意哪些地方,怎样才能做好WEB测试

    基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战.基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否 ...

  4. 使用 jQuery.TypeAhead 让文本框自动完成 (二)(访问远程数据)

    项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...

  5. CreateDatabase is not supported by the provider

    背景:对于本地数据库如(SQLite\Access) Connection string error: “An exception occurred while initializing the da ...

  6. Spring-AOP源码分析随手记(二)

    这次来分析下切面的执行过程. 1.怎么看? 怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的: 然后就来到了这: 2.初步分析 里面有段: if (this.advised.exp ...

  7. Blazor应用程序基于策略的授权

    原文:https://chrissainty.com/securing-your-blazor-apps-configuring-policy-based-authorization-with-bla ...

  8. Visual Studio警告IDE0006的解决办法 引用的dll或者包出现黄色叹号

    首先这种错误,一般是web项目出现的. 一.按照微软官方给的解决方案,查找错误日志: 1. 关闭 Visual Studio. 删除解决方案下的.vs文件夹,这个文件夹默认是隐藏的,找不到的需要打开隐 ...

  9. 关于前端ajax请求url为何添加一个随机数

    一.起因 我在做爬虫的时候发现很多网站上都在url上加一个随机数或者时间戳一开始我以为是啥加密后面发现其实他在后台解析的时候也不需要不排除有些网站他反爬就需要一个时间戳,那他加个随机数是做啥子 二.查 ...

  10. android studio学习----android studio断点调试

    先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...