10099 The Tourist Guide
来源:互联网 发布:iphone桌面软件管理 编辑:程序博客网 时间:2024/06/14 14:12
题意:给出n的城市m条通道,然后每条通道最大的承载人数给出来了,然后给出起点和终点以及要搭载的人数,问最少要走多少次才能把全部游客送到目的地
因为导游每次都要跟团,所以每条交通道路搭载的最大人数要减1= =
克鲁斯卡尔算法,就会排序的时候按照运输人数的从大到小排序,然后当起点和终点在一个联通分支时即可
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;const int maxn=10000;int n,m;int p[maxn];struct node{ int u,v,num;};bool cmp(node a,node b){ return a.num>b.num;}void init(){ for(int i=1;i<=n;i++) p[i]=i;}int find(int x){ return p[x]==x ? x :find(p[x]);}node a[maxn];int main(){ int t=0; while(scanf("%d %d",&n,&m)!=EOF) { if(!n&&!m) break; init(); for(int i=0;i<m;i++) { scanf("%d %d %d",&a[i].u,&a[i].v,&a[i].num); } sort(a,a+m,cmp); int s,e,sum; scanf("%d %d %d",&s,&e,&sum); int k=0; for(int i=0;i<m;i++) { int fx=find(a[i].u); int fy=find(a[i].v); if(fx!=fy) p[fx]=fy; if(find(s)==find(e)) { k=i; break; } } int num=a[k].num; num--; int ans; if(sum%num==0) ans=sum/num; else ans=sum/num+1; printf("Scenario #%d\n",++t); printf("Minimum Number of Trips = %d\n\n",ans); } return 0;}
0 0
- 10099 The Tourist Guide
- 10099 - The Tourist Guide
- UVaOJ 10099 - The Tourist Guide
- uva 10099 The Tourist Guide
- UVa 10099 The Tourist Guide
- Uva 10099 - The Tourist Guide
- UVA 10099 - The Tourist Guide
- 10099 - The Tourist Guide//floyd
- UVa:10099 The Tourist Guide
- UVA - 10099 The Tourist Guide
- UVa 10099 - The Tourist Guide
- UVA 10099 The Tourist Guide
- uva 10099 The Tourist Guide
- UVA 10099 - The Tourist Guide
- UVA 10099 - The Tourist Guide(floyd)
- UVA - 10099 The Tourist Guide kruskal算法
- The Tourist Guide - UVa 10099 Floyd
- uva 10099 - The Tourist Guide翻译
- Uva(10034)
- HDU(1087)继续畅通工程
- 10369 - Arctic Network
- prim算法
- C-Lodop工作原理
- 10099 The Tourist Guide
- hdu2066(迪杰斯特拉算法模板)
- Uva(10986)
- 嵌入式系统
- Uva 558Wormholes
- sencha touch下拉刷新上拉加载实现
- Uva10806
- Uva(10330)
- 串口通信的相关概念和理解原理