题目描述

Bessie and her sister Elsie graze in different fields during the day, and in the evening they both want to walk back to the barn to rest. Being clever bovines, they come up with a plan to minimize the total amount of energy they both spend while walking.

Bessie spends B units of energy when walking from a field to an adjacent field, and Elsie spends E units of energy when she walks to an adjacent field. However, if Bessie and Elsie are together in the same field, Bessie can carry Elsie on her shoulders and both can move to an adjacent field while spending only P units of energy (where P might be considerably less than B+E, the amount Bessie and Elsie would have spent individually walking to the adjacent field). If P is very small, the most energy-efficient solution may involve Bessie and Elsie traveling to a common meeting field, then traveling together piggyback for the rest of the journey to the barn. Of course, if P is large, it may still make the most sense for Bessie and Elsie to travel

separately. On a side note, Bessie and Elsie are both unhappy with the term "piggyback", as they don't see why the pigs on the farm should deserve all the credit for this remarkable form of

transportation.

Given B, E, and P, as well as the layout of the farm, please compute the minimum amount of energy required for Bessie and Elsie to reach the barn.

Bessie 和 Elsie在不同的区域放牧,他们希望花费最小的能量返回谷仓。从一个区域走到一个相连区域,Bessie要花费B单位的能量,Elsie要花费E单位的能量。

如果某次他们两走到同一个区域,Bessie 可以背着 Elsie走路,花费P单位的能量走到另外一个相连的区域。当然,存在P>B+E的情况。

相遇后,他们可以一直背着走,也可以独立分开。

输入输出格式

输入格式:

INPUT: (file piggyback.in)

The first line of input contains the positive integers B, E, P, N, and M. All of these are at most 40,000. B, E, and P are described above. N is the number of fields in the farm (numbered 1..N, where N >= 3), and M is the number of connections between fields. Bessie and Elsie start in fields 1 and 2, respectively. The barn resides in field N.

The next M lines in the input each describe a connection between a pair of different fields, specified by the integer indices of the two fields. Connections are bi-directional. It is always possible to travel from field 1 to field N, and field 2 to field N, along a series of such connections.

输出格式:

OUTPUT: (file piggyback.out)

A single integer specifying the minimum amount of energy Bessie and

Elsie collectively need to spend to reach the barn. In the example

shown here, Bessie travels from 1 to 4 and Elsie travels from 2 to 3

to 4. Then, they travel together from 4 to 7 to 8.

输入输出样例

输入样例#1: 复制

4 4 5 8 8
1 4
2 3
3 4
4 7
2 5
5 6
6 8
7 8 

输出样例#1: 复制

22 
#include<bits/stdc++.h>
#define REP(i, a, b) for(int i = (a); i <= (b); ++ i)
#define REP(j, a, b) for(int j = (a); j <= (b); ++ j)
#define PER(i, a, b) for(int i = (a); i >= (b); -- i)
using namespace std;
const int maxn=1e5+5;
template <class T>
inline void rd(T &ret){char c;ret = 0;while ((c = getchar()) < '0' || c > '9');while (c >= '0' && c <= '9'){ret = ret * 10 + (c - '0'), c = getchar();}
}
struct node{int v,nx;
}p[maxn];
int b,e,n,z,vis[5][maxn],dis[5][maxn],head[maxn],tot,m,ans=0x3f3f3f3f;
void addedge(int u,int v){p[++tot].v=v,p[tot].nx=head[u],head[u]=tot;
}
queue<int>q;
void spfa(int cur){if(cur==0)q.push(1),vis[0][1]=1,dis[cur][1]=0;else if(cur==1)q.push(2),vis[1][2]=1,dis[cur][2]=0;else q.push(n),vis[2][n]=1,dis[cur][n]=0;while(!q.empty()){int now=q.front();q.pop();vis[cur][now]=0;for(int i=head[now];i;i=p[i].nx){int to=p[i].v;if(dis[cur][to]>dis[cur][now]+1){dis[cur][to]=dis[cur][now]+1;if(!vis[cur][to]){q.push(to);vis[cur][to]=1;}}}}
}
int main()
{memset(dis,127,sizeof(dis));rd(b),rd(e),rd(z),rd(n),rd(m);REP(i,1,m){int s,t;rd(s),rd(t);addedge(s,t);addedge(t,s);}spfa(0),spfa(1),spfa(2);REP(i,1,n){//   cout<<dis[1][i]<<endl;ans=min(ans,b*dis[0][i]+e*dis[1][i]+z*dis[2][i]);}cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/czy-power/p/10459082.html

驮运Piggy Back相关推荐

  1. 【洛谷3110】【USACO14DEC】驮运Piggy Back

    题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they b ...

  2. Piggy Back_KEY

    Piggy Back (piggyback.pas/c/cpp) [问题描述] Bessie 和她的姐姐 Elsie 在不同的田块吃草,晚上她们都返回牛棚休息.作为聪明的奶牛,她们想设计一个方案使得步 ...

  3. Piggy Back

    [问题描述] Bessie 和她的姐姐 Elsie 在不同的田块吃草, 晚上她们都返回牛棚休息. 作为聪明的奶 牛, 她们想设计一个方案使得步行消耗的能量最少. Bessie 从一个田块到相邻的田块要 ...

  4. 补鞋匠迈尔鲁夫的故事(二)

    "昨晚我丈夫回到房中,我还来不及跟他交谈,太监菲勒持信赶到我面前,对我说:'有十个奴仆站在宫门外,递这封信给我,对我说:劳你代我们吻我们主人迈尔鲁夫的,并劳驾把这封信交给他.我们是他的仆人, ...

  5. 攻城狮的苦逼选车经历

    2019独角兽企业重金招聘Python工程师标准>>> 攻城狮的苦逼选车经历 转载请注明出处:http://netkiller.github.io/ 我因为玩摄影的关系接触到气车,之 ...

  6. 富人送了穷人一头牛,结果牛死了,看懂的离成功不远了!

    你必须先上路!不是有了同行者才上路,是因为你在路上才会有同行者! 有个穷人,很穷,一个富人见他可怜,就起了善心,想帮他致富.富人送给他一头牛,嘱他好好开荒,等春天来了撒上种子,秋天就可以远离那个&qu ...

  7. 程序员职场规划:你的命运不是一头骡子

    我在杭州工作,周末通常去爬山. 今年九月,这里将举办盛大的G20峰会.全城都在忙碌地筹备,山路上也不例外. 距离西湖最近的一圈山头,都在安装照明设备,准备在夜间亮灯. 那些灯柱都是铸铁做的,高度六七米 ...

  8. 你的命运不是一头骡子

    2019独角兽企业重金招聘Python工程师标准>>> 你的命运不是一头骡子 作者: 阮一峰 我在杭州工作,周末通常去爬山. 2016年9月,这里将举办盛大的 G20 峰会.全城都在 ...

  9. 中国五十六个民族简介

    56个民族是中华人民共和国灿烂星空中(五十六个星座). 中华民族共包括56个民族,汉族是中国的主体民族,占全部人口的91.51%,其他还有55个民族,占8.49%(第六次人口普查).汉族和55个少数民 ...

最新文章

  1. 你被科研方向和创新点困扰多久了?
  2. Hibernate和JDBC、EJB比较
  3. oracle数据库函数/存储过程/包区别
  4. iar升级芯片库_IAR 发布支持ARM Cortex系列的开发工具包
  5. 使用 Spring 2.5 基于注解驱动的 Spring MVC(二)
  6. spring事务模板使用
  7. [Contest20171005]Maze
  8. java类的完整生命周期详解
  9. Android关于Handler发送消息里面的arg1和arg2以及obj和what的用法
  10. 香蜜台词共赴鸿蒙,香蜜台词斗法
  11. 以生活例子说明单线程与多线程
  12. python人脸识别方法_python实现人脸识别代码
  13. MCU OTA升级流程
  14. 苹果cmsv8黑色简约炫酷手机免费影视模板
  15. 水桶理论——联想国际化的奇特哲学
  16. “ 作业帮 “ (Servlet)
  17. linux日志切割命令,linux日志分割、去重、统计
  18. oracle的空间数据库
  19. SpringBoot+Vue实现前后端分离的汽车配件销售管理系统
  20. 14个纸张破损撕纸特效图片视频模板PR剪辑素材

热门文章

  1. OSChina 周四乱弹 —— 但愿那个嘴上说着拒绝的人,其实心里最爱的是你。
  2. 申请android11xColorOS,零时差适配安卓11!ColorOS 11升级公测版体验:丝滑顺畅
  3. oil spill areas mark
  4. C#为listview选中的项添加右键菜单
  5. linux+压缩率最高的命令,Linux压缩解压命令tar、tgz、tar.bz2压缩比率对比
  6. ginx rewrite规则语法
  7. 逼死程序员的翟欣欣方首度发声了,居然这样说,你信不?
  8. div id 与div class 的区别
  9. 手机通过数据线与电脑USB连接之手机详细设置
  10. (实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】