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. 剑指Offer:二叉树中和为某一值的路径【34】

    剑指Offer:二叉树中和为某一值的路径[34] 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. ...

  2. Machine Learning No.4: Regularization

    1. Underfit = High bias Overfit = High varience 2. Addressing overfitting: (1) reduce number of feat ...

  3. P4474 王者之剑

    P4474 王者之剑 题目大意 n*m的带权网格,任意选择起点开始时刻为0秒.以下操作,每秒按顺序执行 在第i秒开始的时候,在方格(x,y)上,获得(x,y)的值 在偶数秒,周围四格的值清零 每秒可选 ...

  4. iOS数据持久化存储之归档NSKeyedArchiver

    归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式),收集了网上的一些资料并结合自己的一些经验,总结如下. 一.使用archiveRootObject进行简 ...

  5. 用js实现图片(小球)在屏幕上上下左右移动

    <html> <head> <title>Document</title> </head> <body style="bac ...

  6. python基础-大杂烩

    random()随机函数 import random print(random.choice('abcdefghij')) #随机取这些字母 print(random.choice(['apple', ...

  7. 网络编程学习笔记-linux常用的网络命令

    网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数.路由参数和无线网络等,就得要了解下面这些相关的命令才行.其中Route及ip这两条命令是比较重要的.当然,比较早期的用法,我们 ...

  8. Android 在Activity中对SQLite的操作

    注册 package com.scme.ui; import android.app.Activity; import android.content.Intent; import android.o ...

  9. 苹果手机app试玩赚钱平台汇总

    注意: 微信扫码下载,绑定手机号和微信.才能提现 每天3点更新任务,4点最多! | 平台 | 提现额 | 任务量| 推荐强度 | 扫码 | 1.小鱼,10元,大量,强推! →点开扫码 2.天天飞燕,5 ...

  10. Call to unavailable function 'system': not available on iOS

    使用Xcode 9 导入cocos2d-x 项目,报错 Call to unavailable function 'system': not available on iOS 原因很简单,就是ios ...