UVA 1395
来源:互联网 发布:阿里云服务器五折 编辑:程序博客网 时间:2024/06/16 22:47
暴力列举每个区间。跑最小生成树。
#include<cstdio>
#include<algorithm>using namespace std;
#define N 105
#define inf 1234567890
int n,m,ans,Max,Min,Num;
int p[N];
struct Node{
int u,v,w;
}e[N*N];
int read()
{
int f=1,x=0;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x;
}
int find(int x) {return p[x]==x? x:p[x]=find(p[x]);}
int max(int A,int B) {return A>B? A:B;}
int min(int A,int B) {return A>B? B:A;}
int check(int l,int r)
{
Max=-inf;Min=inf;Num=0;
for (int i=1;i<=n;i++) p[i]=i;
for (int i=l;i<=r;i++)
{
int fx=find(e[i].v),fy=find(e[i].u);
if (fx!=fy)
{
p[fx]=fy;
Num++;
Max=max(Max,e[i].w);
Min=min(Min,e[i].w);
}
}
return Num==(n-1)? 1:0;
}
bool cmp(Node A,Node B) {return A.w<B.w;}
int main()
{
for (;;)
{
n=read();m=read();
if (n==0&&m==0) break;
for (int i=1;i<=m;i++) {e[i].u=read();e[i].v=read();e[i].w=read();}
sort(e+1,e+m+1,cmp);
ans=inf;
for (int l=1;l<=m;l++)
{
for (int r=l;r<=m;r++)
{
if (check(l,r)) {ans=min(Max-Min,ans);break;}
}
}
if (ans!=inf) printf("%d\n",ans);else puts("-1");
}
return 0;
}
0 0
- Uva 1395
- UVa 1395
- UVA 1395
- uva-1395
- uva 1395
- UVA 1395 Slim Span
- 【UVA】1395-Slim Span
- UVA 1395 - Slim Span
- UVA 1395 Kruskal算法
- UVA - 1395 Slim Span
- UVa 1395 Slim Span
- UVA 1395 Slim Span
- UVA 1395 MST
- UVa 1395 slim span
- UVA 1395 Slim Span
- UVA 1395 Slim Span
- UVA 1395Slim Span
- UVA 1395 生成树
- JavaScript 学习笔记(DOM)
- 引入Android项目时Gradle加载时间很长的解决办法之一(更新1)
- 【matlab】pos函数的使用
- JavaScript学习记录(一)
- javaScript实现焦点轮播图界面效果(五)
- UVA 1395
- nignx配置 underscore的排序函数 sortBy
- Julia实现任意时间周期转换,比如Tick转5分钟周期
- 数据规整化
- android_69_camera_videoCapture
- static关键字
- [FFMPEG-AVFILTERS]文字
- CSS3弹性布局内容对齐(justify-content)属性使用详解
- 战略管理概述