UVA 1395 生成树
2017-03-16 12:12
134 查看
题意
求苗条度(最大边权值-最小边权值)最小的生成树题解
暴力,针对每条边使用Kruskal算法即可。代码
#include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #define MAXN 10010 #define INF 1e9 using namespace std; int u[MAXN],v[MAXN],w[MAXN]; int p[110],r[MAXN]; int n,m; int cmp(int a,int b){ return w[a]<w[b]; } int find(int i){ return i==p[i]?i:p[i]=find(p[i]); } int kruskal(int x){ int last=0; int num=0; for(int i=1;i<=n;i++){ p[i]=i; } for(int i=x;i<m;i++){ int e=r[i]; int a=find(u[e]); int b=find(v[e]); if(a!=b){ num++; last=e; p[b]=a; } } if(num==n-1){ return w[last]-w[r[x]]; } else return INF; } int main() { while(scanf("%d%d",&n,&m)){ if(n+m==0) break; for(int i=0;i<m;i++){ scanf("%d%d%d",&u[i],&v[i],&w[i]); } for(int i=0;i<m;i++){ r[i]=i; } sort(r,r+m,cmp); int maxlen=INF; for(int i=0;i<m;i++){ maxlen=min(maxlen,kruskal(i)); } if(maxlen>=INF) printf("-1\n"); else printf("%d\n",maxlen); } return 0; }
相关文章推荐
- UVA 1395 Slim Span 最小生成树
- Slim Span UVA - 1395 ——Kruskal算法生成最小树
- [生成树][Uva1395][Slim Span]
- uva 1395 - Slim Span(最小瓶颈生成树)
- uva 1395 - Slim Span poj 3522 Slim Span(最小生成树算法)
- 苗条的生长树slim span,uva1395——最小生成树,kruskal
- uva 1395 Slim Span 最小生成树
- UVa 1395 (最小生成树) Slim Span
- 例题11-2 UVA - 1395 Slim Span 苗条的生成树(Kruscal最小生成树)
- UVA - 1395 Slim Span(最小生成树相关)
- UVA-1395(最小瓶颈生成树)
- UVA1395 Slim Span(枚举最小生成树)
- Poj(3522),UVa(1395),枚举生成树
- uva1395 枚举不同区间的最小生成树
- UVa 1395 (最小生成树)
- UVa 1395 Slim Span (最小生成树)
- uva1395 Kruskal算法求最小生成树
- UVa 1395 - Slim Span --生成树入门题
- UVA 1395 Slim Span(生成树)
- uva 1395 苗条的生成树(最小生成树入门)