最小生成树(苗条生成树 uva 1395)
2016-07-17 02:37
363 查看
#include<stdio.h> #include<algorithm> #define maxn 10010 #define INF 0X3F3F3F3F using namespace std; int u[maxn],v[maxn],w[maxn],p[maxn],r[maxn]; int n,m; int cmp(const int i,const int j){return w[i]<w[j];} int find(int x) {return p[x]==x?x:p[x]=find(p[x]);} int main() { while(scanf("%d %d",&n,&m)==2&&(n||m)) { for(int i=1;i<=m;i++) { r[i]=i; int a,b,c; scanf("%d %d %d",&a,&b,&c); u[i]=a;v[i]=b;w[i]=c; } sort(r+1,r+m+1,cmp); int ANS=INF; for(int i=1;i<=m;i++) { int MIN=INF,MAX=0; int cnt=0; for(int j=1;j<=m;j++) p[j]=j; for(int j=i;j<=m;j++) { int e=r[j];int x=find(u[e]);int y=find(v[e]); if(x!=y) {MIN=min(MIN,w[e]);MAX=max(MAX,w[e]);p[x]=y;cnt++;} } if(cnt==n-1) ANS=min(ANS,MAX-MIN); } if(ANS==INF) printf("-1\n"); else printf("%d\n",ANS); } return 0; }
相关文章推荐
- Prim(普里姆)算法求最小生成树的思想及C语言实例讲解
- 详解图的应用(最小生成树、拓扑排序、关键路径、最短路径)
- 最小生成树算法之Prim算法
- 使用C语言实现最小生成树求解的简单方法
- 最小生成树算法——Prim和Kruskal算法的实现
- Data Structure - Week 15
- poj 2485 Highways
- HDU1301 最小生成树kruskal裸题
- Kruskal 最小生成树
- 最小生成树
- 图的最小生成树学习笔记
- 克如斯卡尔算法--最小生成树
- 普里姆算法--最小生成树
- poj2395 解题报告
- HDU-1233 还是畅通工程(最小生成树&并查集)
- 最小生成树之prim算法
- 最小生成树 : Kruskal 算法
- 最小生成树 : Prim 算法
- java数据结构 最小生成树
- POJ1251-Jungle Roads