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

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

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

https://www.luogu.org/problemnew/show/P3110

Bessie和Elsie分别从1和2出发到n,如果某一点会相遇,可以选择剩下的路两个人一起走或者分开走。

因为只有一次相遇且不会一起走然后又分开,这样就对1,2,n三个点各跑一次最短路

最后枚举每一个点(相遇点)

ans=min(dis_b[i]*b+dis_e[i]*e+dis_n[i]*p);

相遇前b走过的路程*b+相遇前e走过的路程*e+一起走的路程*p;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
const int maxn = 8e4+3;
int dis_b[maxn],dis_e[maxn],dis_n[maxn],head[maxn];
bool vis[maxn];
int cnt,b,e,p,n,m,ans=2147483647;
const int INF = 2147483647;
queue<int> q;
struct node
{int next,to;
}E[maxn*10];
void add(int x,int y)
{E[++cnt].next=head[x];E[cnt].to=y;head[x]=cnt;
}
void spfa(int s,int *dis)
{memset(vis,0,sizeof(vis));fill(dis+1, dis+1+n, INF);dis[s]=0;vis[s]=true;q.push(s);while(!q.empty()){int now=q.front();q.pop();vis[now]=false;for(int i=head[now];i;i=E[i].next){int to=E[i].to;if(dis[to]>dis[now]+1){dis[to]=dis[now]+1;if(!vis[to]){q.push(to);vis[to]=true;}}}}
}
int main()
{scanf("%d%d%d%d%d",&b,&e,&p,&n,&m);for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);add(x,y);add(y,x);}spfa(1,dis_b);spfa(2,dis_e);spfa(n,dis_n);for(int i=1;i<=n;i++){ans=min(ans,dis_b[i]*b+dis_e[i]*e+dis_n[i]*p);}printf("%d",ans);return 0;
}

P3110 [USACO14DEC]驮运Piggy Back-最短路,spfa相关推荐

  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

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

  3. 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA

    洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...

  4. spfa(STL写法)简单讲解+最短路(spfa)例题 acm寒假集训日记22/1/7

    前言:SPFA(Shortest Path Faster Algorithm)算法是求单源最短路线的一种算法,它是Bellman-ford的队列优化,它是一种十分高效的最短路算法. spfa 其实可以 ...

  5. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

  6. 单源最短路 SPFA 算法模板

    简介 在图论中,最短路是十分重要的一部分,在很多问题中都有涉及 而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E) 其中 EE 是图的边数,而 kk 是一个常数,一般 ...

  7. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  8. POJ - 2449 Remmarguts' Date(第k短路:spfa+A*)

    题目链接:点击查看 题目大意:给出一个有向图,求第k短路 题目分析:偷学了一波A*,本来以为是多难的算法,其实就是bfs+优先队列的升级版,之前看的那些博客写的都太深奥了,以至于看了一半啥都没看懂然后 ...

  9. 【bzoj1726/Usaco2006 Nov】Roadblocks第二短路——SPFA

    题目链接 分析:题目要求一个连通图的从1到n的严格次短路,我们只需要在跑最短路的时候顺便判一下次短路是否能够被更新即可. dis[x][0]表示1到x的最短路,而dis[x][1]则表示次短路,需要分 ...

  10. jzoj1267-路障【最短路,SPFA】

    正题 大意 一张无向图,求次短路. 解题思路 我们先求出最短路并且求出点1和点n到每个点的距离,然后枚举边,将第一个点离点1的距离,和第二个点离点n的距离加上边权如果不是最短路就记录,然后取最小值. ...

最新文章

  1. 【Java工具类】使用Random类对象生成随机整数
  2. R语言ggplot2可视化分面图(faceting)、并设置每一个分面中的条形图都是排序的(bars are in order in each per facet of facet_warp)
  3. 接私活福音,validation组件敏捷开发,效率提升5倍!
  4. 针对ie6的一些小总结
  5. git使用(一)----git安装
  6. PHP json_encode() 函数介绍
  7. linux 遇到的问题
  8. Spring之RestTemplate如何返回map结果集
  9. Matlab之rand(), randn(), randi()函数的使用方法
  10. 浏览器弹不出java_打开网址跳出弹窗“您的浏览器没有获得Java virtual machine 支持”,怎么办?...
  11. “Runtime Error”不产生dump文件的解决办法
  12. linuxoracle静默安装应答文件修改_巧用组策略分发软件—让IT不再手忙脚乱地奔走在各个工位安装软件...
  13. CMOS模拟集成电路设计学习笔记
  14. 东南大学自动化934面试资料1
  15. 关于大成资源网这一个月大成网停更详细原因
  16. 京东物流数据质量管理体系
  17. fcpx快闪插件推荐,让视频片头片尾更动感
  18. 逻辑回归python正则化 选择参数_SKlearn_逻辑回归小练习
  19. flutter 打开办公文件 pdf ppt xlsx 等等(仅Android)
  20. [k8s]一步一步学习k8syaml

热门文章

  1. ANSYS下载安装+使用学习过程
  2. 什么是MKV文件以及如何打开和播放MKV?
  3. Android NFC 门票系统手机端程序简介
  4. python虚拟变量回归_Python中使用虚拟变量的OLS最佳解决方案?
  5. Windows10打印机共享无法连接到打印机:0x0000011b
  6. 模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每月还款金额:总利息=贷款金额×利息。 每月还款金额=(贷款金额×总利息)÷ 贷款年限。
  7. 语文数学英语计算机文理科,高考文理科英语试卷一样吗
  8. 林海峰讲的python_python常用模块-------转自林海峰老师
  9. chrome浏览器视频加速插件安装教程
  10. 一个人成熟的5大标志