P3110 [USACO14DEC]驮运Piggy Back

题目描述

贝西和她的妹妹艾尔斯白天在不同的地方吃草,而在晚上他们都想回到谷仓休息。聪明的牛仔,他们想出了一个计划,以尽量减少他们在步行时花费的总能量。

贝西在从田野走到相邻的地方时,花费B个能量单位,当她走到相邻的地方时,Elsie花费了E个能量单位。但是,如果Bessie和Elsie在同一个领域,Bessie可以携带Elsie在她的肩上,两者都可以移动到相邻的场地,而只花费P个能量单位(P可能比B + E小得多,Bessie的数量而Elsie会单独走到邻近的地方)。如果P非常小,最节能的解决方案可能涉及到Bessie和Elsie前往一个共同的会议场地,然后一起携带搭载旅行到谷仓的其余时间。当然,如果P很大,那么Bessie和Elsie可能最有意义的旅行

分别。在附注中,Bessie和Elsie对“背负”一词不满意,因为他们不明白为什么农场上的猪应该得到这种卓越形式的所有信用

运输。

给定B,E和P以及农场的布局,请计算Bessie和Elsie到达谷仓所需的最低能量。

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

如果某次他们两走到同一个区域,Bessie可以背着Elsie走路,花费P单位的能量走到另外一个相连的区域,满足P <B + E。

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

输入输出格式

输入格式:

INPUT :(文件piggyback.in)

第一行输入包含正整数B,E,P,N和M.所有这些最多为40,000。B,E和P如上所述。N是场中的字段数(编号为1..N,其中N> = 3),M是字段之间的连接数。Bessie和Elsie分别从1区和2区开始。谷仓住在田间N.

输入中的下一行M行描述了由两个字段的整数索引指定的一对不同字段之间的连接。连接是双向的。总是可以沿着一系列这样的连接从场1到场N,场2到场N。

输出格式:

OUTPUT:(文件piggyback.out)

一个整数,指定最小的能量Bessie和

Elsie集体需要花费到达谷仓。在例子中

这里显示,贝西从1到4,Elsie从2到3

然后,他们一起旅行从4到7到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 
/*
三遍bfs分别求以1,2,n为起点的最短路,然后枚举然后枚举两人相遇的点,计算消耗之和即可
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define maxn 40010
int bb,ee,p,n,m,num,head[maxn];
long long ans=;
int a[maxn],b[maxn],c[maxn];
struct node{
int to,pre;
}e[maxn*];
bool vis[maxn];
void Insert(int from,int to){
e[++num].to=to;
e[num].pre=head[from];
head[from]=num;
}
void bfs(int start,int f[]){
memset(vis,,sizeof(vis));
queue<int>q;
q.push(start);
vis[start]=;
while(!q.empty()){
int now=q.front();q.pop();
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(!vis[to]){
vis[to]=;
f[to]=f[now]+;
q.push(to);
}
}
}
}
int main(){
//freopen("Cola.txt","r",stdin);
scanf("%d%d%d%d%d",&bb,&ee,&p,&n,&m);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
Insert(x,y);
Insert(y,x);
}
bfs(,a);
bfs(,b);
bfs(n,c);
for(int i=;i<=n;i++){
ans=min(ans,1LL*(bb*a[i]+ee*b[i]+p*c[i]));
}
cout<<ans;
}
 

洛谷P3110 [USACO14DEC]驮运Piggy Back的更多相关文章

  1. 2018.08.17 洛谷P3110 [USACO14DEC]驮运(最短路)

    传送门 一道sb最短路,从两个起点和终点跑一边最短路之后直接枚举两人的汇合点求最小值就行了. 代码: #include<bits/stdc++.h> #define N 40005 #de ...

  2. 【题解】Luogu P3110 [USACO14DEC]驮运Piggy Back

    [题解]Luogu P3110 [USACO14DEC]驮运Piggy Back 题目描述 Bessie and her sister Elsie graze in different fields ...

  3. luogu P3110 [USACO14DEC]驮运Piggy Back |最短路

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

  4. P3110 [USACO14DEC]驮运Piggy Back

    传送门 做过次短路后,再来做这题感觉轻松不少. 这题看着就像最短路模板题. 思路: 虽说题目看起来比较水,但是码起来还是有点难度的.(对我这个蒟蒻来说) 这道题,跟"路障"一题差不 ...

  5. Luogu P3110 [USACO14DEC]驮运Piggy Back

    解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$ ...

  6. [USACO14DEC]驮运Piggy Back

    题目描述 Bessie 和 Elsie在不同的区域放牧,他们希望花费最小的能量返回谷仓.从一个区域走到一个相连区域,Bessie要花费B单位的能量,Elsie要花费E单位的能量. 如果某次他们两走到同 ...

  7. [luoguP3110] [USACO14DEC]驮运Piggy Back(SPFA || BFS)

    传送门 以 1,2,n 为起点跑3次 bfs 或者 spfa 那么 ans = min(ans, dis[1][i] * B + dis[2][i] * E + dis[3][i] * P) (1 & ...

  8. 洛谷 [P3110] 驮运

    题目略带一点贪心的思想,先跑三遍最短路(边权为一,BFS比SPFA高效) 一起跑总比分开跑高效,枚举两人在何点汇合,输出最小值. #include <iostream> #include ...

  9. 洛谷 P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver

    P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题目描述 The cows are out exercising their hooves again! There are N ...

随机推荐

  1. 转载 j2ee j2se j2me 区别,mvc 和ssh联系理解

    [转]J2SE J2EE J2ME的区别 以及 MVC与SSH对应关系 2014-3-6阅读322 评论0 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在J ...

  2. (转)CentOS 5.5 64bit 编译安装Adobe FlashMediaServer 3.5

    http://download.macromedia.com/pub/flashmediaserver/updates/4_0_2/Linux_32bit/FlashMediaServer4.tar. ...

  3. 编写你的第一个django应用程序2

    从1停止的地方开始,我们将设置数据库,创建您的第一个模型,并快速介绍django自动生成的管理站点 数据库设置 现在,打开mysite/settings.py.这是一个普通的python模块,其中模块 ...

  4. python获取本机IP地址

    方法一 通常使用socket.gethostname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称) import socket #获取计算机名称hostname=socke ...

  5. C# 计时器 以“天时分秒毫秒”形式动态增加显示

    参考:http://zhidao.baidu.com/link?url=j-jxQJenrO54BSKJ_IkXWbhdDqbVLUyyenjjSGs8G0xdisgBZ0EMhzyWgARSFct6 ...

  6. tensorflow学习官网地址

    摘自: http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/overview.html 内容很多,需要花时间看完

  7. 分享知识-快乐自己:Oracle SQL语法汇总

    --删除重复值-保留重复值最大的编号 delete from emp where rowid in( select rowid from emp where rowid not in( select ...

  8. Linux_服务器_06_VMware虚拟机下安装CentOS7.0图文教程

    二.参考资料 1.VMware虚拟机下安装CentOS7.0图文教程

  9. mysql一次性和多次取数据的性能测试

    1.表结构 2.数据量 3.代码 先从学生表里面查出300名学生,然后找出每个学生的班级信息,然后merge起来 3.性能对比 第一种:每次取一条 第二种:一次全去除 4.总结 不能循环取从数据库中取 ...

  10. 机器学习: Logistic Regression--python

    今天介绍 logistic regression,虽然里面有 regression 这个词,但是这其实是一种分类的方法,这个分类方法输出的也是 0-1 之间的一个数,可以看成是一种概率输出,这个分类器 ...