UVA 10099(kruskal/Floyd)
来源:互联网 发布:梭哈游戏c 算法实现 编辑:程序博客网 时间:2024/05/21 22:47
传送门
题解:
求每条路径上最小权值的最大值,数据范围是出给Floyd,但是可以用kruskal构造最大生成树实现。
P.S.本人做UVA说是要巩固基础,另一大原因就是想刷点访问量╮(╯▽╰)╭,一道大水题做了接近半个小时,真是点背。。。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int MAXN=105,MAXM=MAXN*MAXN;int n,m,fa[MAXN],st,ed,sum;struct EDGE { int u,v,w; bool operator <(const EDGE &x) const { return w>x.w; }}e[MAXM];inline int read() { int x=0;char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return x;}int find(int x) { return fa[x]==x?x:fa[x]=find(fa[x]);}int main() { int kase=0; while (scanf("%d%d",&n,&m)&&(n||m)) { for (int i=1;i<=n;++i) fa[i]=i; for (int i=0;i<m;++i) e[i].u=read(),e[i].v=read(),e[i].w=read(); sort(e,e+m); int num; st=read(),ed=read(),sum=read(); for (int i=0;i<m;++i) { int u=e[i].u,v=e[i].v; u=find(u),v=find(v); if (u^v) { fa[u]=v,num=e[i].w; if (find(st)==find(ed)) break; } } printf("Scenario #%d\n",++kase); printf("Minimum Number of Trips = %d\n\n",(int)ceil(1.0*sum/(1.0*num-1.0))); } return 0;}
阅读全文
0 0
- UVA 10099(kruskal/Floyd)
- UVA 10099 Kruskal算法 Floyd算法
- UVa 10048 - Audiophobia(Floyd, Kruskal)
- uva10048 (floyd & kruskal)
- UVA 10457 ,uva10048 kruskal,最小瓶颈树,floyd
- UVA 10099 - The Tourist Guide(floyd)
- uva 10099(floyd变式)
- UVa 567 - Risk (Floyd)
- Uva - 567 - Risk(Floyd)
- UVA - 567 Risk(Floyd)
- uva 10048 Audiophobia(floyd)
- UVA-558 Wormholes(Floyd)
- UVA 10048 Audiophobia(Floyd)
- UVA - 10099 The Tourist Guide (floyd+dp)
- 紫书例题 11-5 Uva 10048 Floyd变形或者Kruskal离线
- UVA - 10099 The Tourist Guide kruskal算法
- UVA - 10034 Freckles (kruskal算法)
- UVA 1395 Slim Span(kruskal算法)
- 定义一个圆类(Circle),
- 一个SQL查询出每门课程的成绩都大于80的学生姓名
- Oracle 11g安装步骤详谈
- Java Activiti(5)--核心API
- 2016ACM/ICPC亚洲区大连站 I
- UVA 10099(kruskal/Floyd)
- (网易2018校招笔试)[编程题] 魔法币
- Saving HDU
- JAVA设计模式-工厂模式
- C#中winform窗体的美化控件 iriskin(二)
- 树
- 从零讲JAVA ,给你一条 清晰地学习道路!
- 单个插槽及具名插槽理解
- 数据库锁机制