poj3552 Slim Span(暴力+kruskal)
来源:互联网 发布:淘宝网上能买汽车吗 编辑:程序博客网 时间:2024/06/07 02:45
这题就是求一个最小生成树,最小生成树的定义为最大边-最小边最小。我们可以直接暴力的枚举最小边,然后做最小生成树。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 110inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n,m,ans=0,fa[N];struct edge{ int x,y,val;}e[N*N];inline bool cmp(edge x,edge y){return x.val<y.val;}inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}int main(){// freopen("a.in","r",stdin); while(1){ n=read();m=read();if(!n&&!m) break;ans=inf; for(int i=1;i<=m;++i) e[i].x=read(),e[i].y=read(),e[i].val=read(); sort(e+1,e+m+1,cmp); for(int s=1;s+n-1-1<=m;++s){ for(int i=1;i<=n;++i) fa[i]=i;int tot=0,t=s; while(t<=m){ int xx=find(e[t].x),yy=find(e[t].y); if(xx!=yy) fa[xx]=yy,++tot; if(tot==n-1) break;++t; }if(tot!=n-1) break; ans=min(ans,e[t].val-e[s].val); }if(ans==inf) puts("-1"); else printf("%d\n",ans); }return 0;}
阅读全文
0 0
- poj3552 Slim Span(暴力+kruskal)
- 【hdu】 Slim Span (kruskal)
- UVA1395 Slim Span(kruskal算法)
- UVA 1395 Slim Span(kruskal算法)
- uva 1395 Slim Span(kruskal)
- poj 3522 Slim Span(Kruskal+枚举)
- POJ3522 Slim Span(kruskal)
- POJ 3522 slim span Kruskal
- POJ 3522 Slim Span (并查集 + 枚举 + kruskal)
- poj 3522 Slim Span(最小生成树)kruskal算法
- POJ 3522 Slim Span(最小生成树-Kruskal)
- UVA - 1395 - Slim Span(Kruskal算法+枚举)
- Slim Span(并查集+kruskal函数)
- POJ 3522-Slim Span(苗条树-kruskal生成树)
- poj3522 Slim Span 最长边与最短边差值最小的生成树,kruskal算法 + 暴力枚举
- POJ 3522 Slim Span kruskal+枚举。
- POJ 3522 Slim Span (Kruskal+枚举)
- poj 3522 Slim Span (Kruskal+枚举)
- numpy函数
- opencv相机姿态解算程序
- spring 5.0 AOP底层讲解 06
- Hadoop
- 《WebGL编程指南》学习笔记——2.使用< canvas >元素
- poj3552 Slim Span(暴力+kruskal)
- 双系统正确卸载Ubuntu系统
- 浏览器环境下js对文件进行写入
- JavaWeb学习笔记-servlet-02-生命周期
- RocketMQ原理(4)——消息ACK机制及消费进度管理
- leetcode 229[medium]--- Majority Element II
- Objective-C 判断对象是否相等
- curl编译以及arm交叉编译
- RocketMQ(5)——消息文件过期原理