uva1395 Slim Span
来源:互联网 发布:c语言 while break 编辑:程序博客网 时间:2024/05/17 07:04
Slim Span
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#define N 100090
#define MAXN 99999999
using namespace std;
int n,m,t=0;
int pre[N],used[N];
struct node
{
int st,ed,val;
}e[N];
void init()
{
for(int i=0;i<=105;i++)
{
pre[i]=i;
}
t=0;
}
int cmp(node a,node b)
{
return a.val<b.val;
}//从小到大排序
int Find(int m)
{
int n=m;
while(n!=pre[n])
n=pre[n];
//pre[m]=n;
return n;
}//查找根节点
void kruskal(int l)
{
int cha=MAXN;
for(int i=0;i<l;i++)
{
init();
for(int j=i;j<l;j++)
{
int fx=Find(e[j].st);
int fy=Find(e[j].ed);
if(fx!=fy)
{
pre[fx]=fy;
t++;
}
if(t==n-1)
{
cha=min(cha,e[j].val-e[i].val);
break;
}
}
}
if(cha==MAXN)
printf("-1\n");
else
printf("%d\n",cha);
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&e[i].st,&e[i].ed,&e[i].val);
}
sort(e,e+m,cmp);
kruskal(m);
}
return 0;
}
思路:遍历(暴力)。。。不要想的太复杂,不会超时的,数据很小的。从小到大生成一个最小生成树,求下差值。然后把最短的边删去,再生成一颗最小生成树,更新最小差值,知道不能生成树。如果一开始就不能生成树,直接输出-1.
- (UVA1395)Slim Span(A)
- uva1395 Slim Span
- [生成树][Uva1395][Slim Span]
- Uva1395——Slim Span
- UVA1395 Slim Span(kruskal算法)
- UVA1395[Slim Span] Kruskal模板题
- Uva1395 Slim Span(最小生成树)
- Uva1395.Slim Span(最小生成树变形)
- UVa1395&POJ3522--Slim Span【kruskal】瓶颈生成树
- UVa1395 && POJ 3522 Slim Span [最小生成树]
- UVA1395-Slim Span(最小生成树Kruskal、并查集)
- 苗条的生长树slim span,uva1395——最小生成树,kruskal
- Slim Span
- Slim Span
- Slim Span
- Slim Span
- Slim Span
- Slim Span
- C++单例模式
- python mysql安装遇到的问题
- eclipse中Add External JARs的时候导入了zip格式文件导致eclipse不能正常跳转
- 解决Warning:android-apt plugin is incompatible with future version of Android Gradle plugin.
- Windows下搭建Eclipse+Tomcat环境
- uva1395 Slim Span
- Android 一一 探究活动
- 第八周项目3对称矩阵的压缩存储
- JS判断页面在那个浏览器打开02-微信、微博
- uva6437 Power Plant
- 微信公众号实现机器人回复
- C++风格_sizeof
- 斐波那契
- 数据结构上机实践第八周项目7—对称矩阵的压缩存储及基本运算