10099 The Tourist Guide
生活随笔
收集整理的這篇文章主要介紹了
10099 The Tourist Guide
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:給出n的城市m條通道,然后每條通道最大的承載人數(shù)給出來(lái)了,然后給出起點(diǎn)和終點(diǎn)以及要搭載的人數(shù),問(wèn)最少要走多少次才能把全部游客送到目的地
因?yàn)閷?dǎo)游每次都要跟團(tuán),所以每條交通道路搭載的最大人數(shù)要減1= =
克魯斯卡爾算法,就會(huì)排序的時(shí)候按照運(yùn)輸人數(shù)的從大到小排序,然后當(dāng)起點(diǎn)和終點(diǎn)在一個(gè)聯(lián)通分支時(shí)即可
#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;elseans=sum/num+1;printf("Scenario #%d\n",++t);printf("Minimum Number of Trips = %d\n\n",ans);}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/NaCl/p/9580150.html
總結(jié)
以上是生活随笔為你收集整理的10099 The Tourist Guide的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 常用前端代码资源(转)
- 下一篇: Udp发送