poj-3522-Slim Span-kruskal活用
来源:互联网 发布:理智与情感结局 知乎 编辑:程序博客网 时间:2024/04/28 13:53
本题的题意是让你求一颗生成树,使得最大边-最小边最小。
枚举最小边。kruskal求生成树的最大边。
#include <iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<stack>#include<math.h>using namespace std;#define maxm 110*110#define maxn 110#define eps 0.000001#define zero(x) ((fabs(x)<eps?0:x))#define INF 99999999struct list{ int u; int v; int w; friend bool operator < (const list &a,const list &b) { return a.w<b.w; }}edge[maxm];int f[maxn];int find(int x){ while(x!=f[x])x=f[x]; return x;}int main(){ int n,m,i,j,k; while(~scanf("%d%d",&n,&m)&&(n||m)) { for(i=1;i<=m;i++) { scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w); } sort(edge+1,edge+m+1); int minn=INF; for(k=1;k<=m;k++) { for(i=1;i<=n;i++)f[i]=i; int l=0; int amin,amax; amin=INF; amax=-1; for(i=k;i<=m;i++) { int a=find(edge[i].u); int b=find(edge[i].v); if(a==b)continue; l++; amin=min(amin,edge[i].w); amax=max(amax,edge[i].w); f[a]=b; if(l==n-1)break; } if(l!=n-1)break; minn=min(minn,amax-amin); } if(minn==INF)cout<<"-1"<<endl; else cout<<minn<<endl; } return 0;}
0 0
- poj-3522-Slim Span-kruskal活用
- POJ 3522 slim span Kruskal
- POJ 3522 Slim Span kruskal+枚举。
- POJ 3522 Slim Span (Kruskal+枚举)
- poj 3522 Slim Span (Kruskal+枚举)
- poj 3522 Slim Span【kruskal算法】
- POJ - 3522 Slim Span (kruskal+枚举)
- poj 3522 Slim Span(Kruskal+枚举)
- POJ 3522 Slim Span (并查集 + 枚举 + kruskal)
- poj 3522 Slim Span(最小生成树)kruskal算法
- POJ 3522 Slim Span(最小生成树-Kruskal)
- poj 3522 Slim Span(最小生成树 Kruskal算法)
- POJ 3522-Slim Span(苗条树-kruskal生成树)
- 最小生成树kruskal POJ 3522 Slim Span
- POJ 3522 Slim Span
- poj 3522 Slim Span
- POJ 3522 Slim Span
- poj 3522 Slim Span
- get请求中特殊字符的处理
- linux下搭建基于Eclipse的arm的开发环境
- jquery ajax deferred
- Android framework系统默认设置修改
- 2014-项目五-复数相加
- poj-3522-Slim Span-kruskal活用
- 对比iOS中的四种数据存储
- XTOJ 1173 Five Tiger
- SDN/OpenFlow控制器RYU的简介、安装与使用
- php学习之try catch
- 用户名验证(javascript脚本)
- printf 缓冲机制的问题
- hadoop2.2.0编译
- ios获取时间和星期(注意week1是星期天)