UVA1395 Slim Span(枚举最小生成树)
题意: 求最小生成树中,最大的边减去最小的边 最小值。
看了题解发现真简单=_=
将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int Max = ;
const int N = ;
int father[N];
struct Edge
{
int x, y, dist;
};
Edge edge[Max];
int cmp(Edge t1, Edge t2)
{
return t1.dist < t2.dist;
}
int find_father(int x)
{
if (x == father[x])
return x;
return father[x] = find_father(father[x]);
}
int main()
{
int n, m;
while (scanf("%d%d", &n, &m) != EOF)
{
if (m == && n == )
break;
for (int i = ; i < m; i++)
{
scanf("%d%d%d", &edge[i].x, &edge[i].y, &edge[i].dist);
}
sort(edge, edge + m, cmp);
int minn = INF;
for (int i = ; i < m; i++)
{
for (int j = ; j <= n; j++)
father[j] = j;
int cnt = ;
for (int j = i; j < m; j++) // 依次枚举每一个生成树
{
int fx = find_father(edge[j].x);
int fy = find_father(edge[j].y);
if (fx != fy)
{
father[fx] = fy;
cnt++;
if (cnt == n - ) // 一旦构成生成树,j是最大边权,i是最小权,相减更新
{
minn = min(minn, edge[j].dist - edge[i].dist);
break;
}
}
}
}
if (minn == INF)
printf("-1\n");
else
printf("%d\n", minn);
}
return ;
}
UVA1395 Slim Span(枚举最小生成树)的更多相关文章
- uva1395 - Slim Span(最小生成树)
先判断是不是连通图,不是就输出-1. 否则,把边排序,从最小的边开始枚举最小生成树里的最短边,对每个最短边用Kruskal算法找出最大边. 或者也可以不先判断连通图,而是在枚举之后如果ans还是INF ...
- POJ 3522 Slim Span(极差最小生成树)
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9546 Accepted: 5076 Descrip ...
- POJ 3522 ——Slim Span——————【最小生成树、最大边与最小边最小】
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7102 Accepted: 3761 Descrip ...
- UVA1395 Slim Span(kruskal)
题目:Slim Span UVA 1395 题意:给出一副无向有权图,求生成树中最小的苗条度(最大权值减最小权值),如果不能生成树,就输出-1: 思路:将所有的边按权值有小到大排序,然后枚举每一条边, ...
- POJ-3522 Slim Span(最小生成树)
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8633 Accepted: 4608 Descrip ...
- LA 3887 - Slim Span 枚举+MST
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Uva1395 POJ3522 Slim Span (最小生成树)
Description Given an undirected weighted graph G, you should find one of spanning trees specified as ...
- UVa 1395 Slim Span (最小生成树)
题意:给定n个结点的图,求最大边的权值减去最小边的权值最小的生成树. 析:这个和最小生成树差不多,从小到大枚举左端点,对于每一个左端点,再枚举右端点,不断更新最小值.挺简单的一个题. #include ...
- UVa 1395 Slim Span【最小生成树】
题意:给出n个节点的图,求最大边减最小边尽量小的值的生成树 首先将边排序,然后枚举边的区间,判定在该区间内是否n个点连通,如果已经连通了,则构成一颗生成树, 则此时的苗条度是这个区间内最小的(和kru ...
随机推荐
- ArcEngine将线符号化为立方体状
对于二三维同步中的三维视图肯定是需要通过二维元素来符号化成三维元素的,之前项目测试临时采用这个自代的圆管状: esriSimple3DLineStyle AxisStyle = esriSimple3 ...
- 思维导图分享以及MindManager使用说明
来源于: http://www.cnblogs.com/muhongxing/archive/2009/12/22/1628782.html http://www.cnblogs.com/muhong ...
- 【BZOJ 4598】【SDOI 2016 Round2 Day1 T3】模式字符串
2016-05-21因为BZOJ上“ 数据文件太过巨大,仅提供前三组数据测试.”所以我考场上写的60分的点分治交上去也A了. 我的这个点分治的时间复杂度是$O(Tnmlogn)$的,听题解时没听懂$O ...
- 【BZOJ 1096】【ZJOI 2007】仓库建设 DP+斜率优化
后缀自动机看不懂啊QAQ 放弃了还是看点更有用的东西吧,比如斜率优化DP 先水一道 #include<cstdio> #include<cstring> #include< ...
- Region的周长, 面积与紧凑程度
Perimeter 边界长度. 计算方式跟边界的表示方式有关 Area 包含的点的个数 Compactness 两种常用的计算方式 \(\frac {perimeter^2}{area}\). cir ...
- 寻找数组中第K频繁的元素
问题是:给你一个数组,求解出现次数第K多的元素.当然leetcode上的要求是算法复杂度不能大于O(N*logN). 首先这个问题我先是在leetcode上看到,当时想了两种做法,做到一半都觉得不是很 ...
- BuiltWith
BuiltWith网站技术信息查询工具 利用该网站所提供的功能,你可以查询出某网站背后是由哪些技术来支持的, 比如操作系统的类型.所采用的访问量统计服务.采用的发布平台.广告平台.语言框架.聚合功能. ...
- js 中 == 和=== 有什么区别?
第一个是相等符:第二个全等符: 其中第一个在比较的时候,会进行类型转换,而第二个则不会, alert('55' == 55);//truealert('55' === 55);//false
- bzoj4402: Claris的剑
首先,对于本质相同的构造,我们只计算字典序最小的序列 假设序列中最大的元素为top 我们很容易发现这样的序列一定是1,2,..,1,2,3,2,3,...,2,3,4,3,4.........,top ...
- Sublime Text 3 python和Package Control配置方法
(如果下面的方法试了Packages control功能还是不能用参考这个方法: 1.直接把C:\Sublime Text 3x64\Data\Packages\ 目录下原有的Packages c ...