★   输入文件:piggyback.in   输出文件:piggyback.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

Bessie和她妹妹Elsie白天都在牧场的不同区域吃草,晚上再回到谷仓休息。天生聪明的她们,想出了一个最节省体力的办法。

Bessie从一个区域走到相邻区域需要花费B单位的体力,Elsie走到相邻区域需要花费E单位的体力,但是,如果如果她俩都在同一个区域的话,Bessie可以把Elsie背在背上一起走到相邻的区域,只需要花费P单位的体力,这会比她俩分别从这个区域单独走到该区域要节省体力。如果P非常小的话,最高效的方式就是俩人先走到一个地方集合,然后一个驮着另一个回到谷仓;当然了,如果P太大,自然还是两人分头行动比较合算。不过话说回来,她们俩其实并不喜欢这种毫无风度的背驮式行走,这会让她们尊严扫地。

给出B,E和P,以及牧场的布局,请计算Bessie和Elsie回到谷仓所需的最小体力和。

【输入格式】

第一行有5个正整数:B,E,P,N和M,均不超过40000,其中B,E和P所表示的含义如上所述,N表示牧场中区域的个数,编号依次为1~N(N>=3),M表示区域之间边的个数,Bessie和Elsie最初分别待在1号和2号区域,谷仓位于N号区域;

接下来有M行,每行有两个空格隔开的整数,表示某两个

【输出格式】

输出只有一个整数,表示Bessie和Elsie最终回到谷仓一共需要花费的体力的最小值。

【样例输入】

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

【样例输出】

22

【提示】

样例解释:

Bessie先从1号区域来到4号区域,Elsie则先从2号区域经由3号区域也来到4号区域,然后采用背驮式从4号区域经由7号区域到达8号区域,即谷仓。

【来源】

在此键入。

bfs

枚举中间点取最小值

屠龙宝刀点击就送

#include <cstring>
#include <cstdio>
#include <queue>
#define N 40005
using namespace std;
bool vis[N];
int B,E,P,n,m,cnt,dep[N][],to[N<<],head[N],nextt[N<<];
inline int min(int a,int b) {return a>b?b:a;}
void bfs(int s,int type)
{
memset(vis,,sizeof(vis));
vis[s]=;
dep[s][type]=;
queue<int>q;
q.push(s);
for(int u;!q.empty();)
{
u=q.front();
q.pop();
for(int i=head[u];i;i=nextt[i])
{
int v=to[i];
if(!vis[v])
{
dep[v][type]=dep[u][type]+;
vis[v]=;
q.push(v);
}
}
}
}
int main(int argc,char *argv[])
{
freopen("piggyback.in","r",stdin);
freopen("piggyback.out","w",stdout);
scanf("%d%d%d%d%d",&B,&E,&P,&n,&m);
for(int u,v;m--;)
{
scanf("%d%d",&u,&v);
nextt[++cnt]=head[u];to[cnt]=v;head[u]=cnt;
nextt[++cnt]=head[v];to[cnt]=u;head[v]=cnt;
}
bfs(,);
bfs(,);
bfs(n,);
int ans=0x7fffffff;
for(int i=;i<=n;++i) ans=min(ans,dep[i][]*B+dep[i][]*E+dep[i][]*P);
printf("%d\n",ans);
return ;
}

COGS 1944. 背驮式行走的更多相关文章

  1. Piggy Back_KEY

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

  2. iOS内存管理策略和实践

    转:http://www.cocoachina.com/applenews/devnews/2013/1126/7418.html 内存管理策略(memory Management Policy) N ...

  3. iOS 内存管理实践

    内存管理实践 尽管基本的概念在内存管理策略文章中简单得阐述了,但是还有一些实用的步骤让你更容易管理内存:有助于确保你的程序最大限度地减少资源需求的同时,保持可靠和强大. 使用“访问器方法”让内存管理更 ...

  4. 抓包工具:tcpdump抓包命令详解

    抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ...

  5. TE9手机微信场景

    HTML <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  6. XCL-Charts图表库简要教程及常见问题

    这个Andriod图表库项目从开始至现在,热情消耗几近殆尽.还好已基本实现我想做的那些东西.趁还剩下点兴趣,把一些点非常简单的归纳一下. 所支持的图表类型: 基类                   ...

  7. 红米手机拍照效果测评(对比小米2A)

    小米相关的产品一向都很很受用户的欢迎,一个就是实惠,另一个就是配置还不错.近期小米推出的红米手机可谓是先声夺人,关注度异常火爆.今天刚抢的红米快递寄到了,来测试下红米手机的拍照表现,800万像素怎么样 ...

  8. 武汉新芯:已建成IP体系,欲以存储器为特色

    武汉新芯集成电路制造公司(XMC)是地方政府投资的半导体企业,2006年由湖北省.武汉市.武汉市东湖高新区投资,并由东湖高新区管理的全资国有企业,前几年委托SMIC(中芯国际)经营管理,从2012年底 ...

  9. Nokia大事录

    1994年,接通中国第一个GSM电话. 1995年,接通中国第一个无线数据电话. 1996年,接通中国第一个GSM1800网络电话.首家推出同时支持简繁中文短讯的移动电话--诺基亚8110.  199 ...

随机推荐

  1. 打开Visual Studio Code,rg.exe占用CPU过高

    打开Visual Studio Code,再打开文件-首选项-设置 搜索“followSymlinks” 将“√”给取消掉

  2. java笔试面试题准备

    J2SE基础 九种基本数据类型的大小,以及它们的封装类 byte 8 Byte char 16 Character short 16 Short int 32 Integer long 64 Long ...

  3. Codeforces - 102222H - Fight Against Monsters - 贪心

    https://codeforc.es/gym/102222/problem/H 题意:有一堆怪兽,怪兽有HP和ATK.你有一个英雄,英雄每次先被所有怪兽打,然后打其中一个怪兽.打的伤害递增,第一次1 ...

  4. VS code deploy同步服务器代码

    首先在安装“deploy”插件 然后打开settings.json文件加上 { "deploy": { "packages": [ { "name&q ...

  5. uva 1614奇怪的股市(归纳法证明,贪心)

    uva 1614奇怪的股市(归纳法证明,贪心) 输入一个长度为n的序列a,满足\(1\le a_i\le i\),要求确定每个数的正负号,使得所有数的总和为0.例如a={1, 2, 3, 4},则4个 ...

  6. 帝都Day4(3)——还是数据结构

    可并堆 左偏树中 dist[x]=dist[rs[x]]+1 合并的时候,把权志较大的根作为根节点,把这棵树右子树和另一棵树合并. 说明白点:(上图描述有点问题) 设x表示根权值较大的左偏树,y表示根 ...

  7. HDU2047 阿牛的EOF牛肉串

    题目:https://blog.csdn.net/qq_40932661?t=1 表面上看去似乎无从下手.但是可以从前面地推出后面的 递推: 假如涂第N个位置,有两种可能,①涂O ②不涂O. 如果涂O ...

  8. Migration-添加表(加外键)

    public partial class _222 : DbMigration { public override void Up() { //DropForeignKey("dbo.Ass ...

  9. Luogu P5103 「JOI 2016 Final」断层 树状数组or线段树+脑子

    太神仙了这题... 原来的地面上升,可以倒着操作(时光倒流),转化为地面沉降,最后的答案就是每个点的深度. 下面的1,2操作均定义为向下沉降(与原题意的变换相反): 首先这个题目只会操作前缀和后缀,并 ...

  10. 练习二十:python计算皮球下落速度练习题

    问题简述:假设一个皮球从100米高度自由落下.条件,每次落地后反跳回原高度的一般,在落下 要求:算出皮球,在第十次落地时,共经过多少米?第十次反弹多高? 方法一: h,sum1 = 100,100 # ...