解题思路

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

之后直接枚举两头牛在哪里相遇,相遇之后一起背着走的路程乘以$p+$相遇之前$B$走的距离乘以$b+$相遇之前$E$走的距离乘以$e$,去一个最小的这样的值就是答案。

关于为什么不需要分类讨论,因为你把每个点都枚举了一遍,即使存在$p>b+e$的情况,那这种情况就等价于两头奶牛在$n$点相遇。

附上代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
const int maxn = 8e4+3, INF = 2147483647;
int b, e, p, n, m, fir[maxn], nxt[maxn], u[maxn], v[maxn], cnt;
int dist_n[maxn], dist_1[maxn], dist_2[maxn], w[maxn], Ans = INF;
bool vis[maxn];
inline int read() {int x = 0, f = 1; char c;while (c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while (c <= '9' && c >= '0') {x = x*10 + c-'0'; c = getchar();}return x * f;
}
inline void addedge(int x, int y, int z) {nxt[++cnt] = fir[x];fir[x] = cnt;u[cnt] = x, v[cnt] = y, w[cnt] = z;
}
inline void SPFA(int s, int *dist) {std::queue<int> Q;std::memset(vis, 0, sizeof(vis));std::fill(dist+1, dist+1+n, INF);vis[s] = 1, dist[s] = 0;Q.push(s);int x, k;while (!Q.empty()) {x = Q.front(), Q.pop();int k = fir[x];while (k != -1) {if(dist[v[k]] > dist[u[k]] + w[k]) {dist[v[k]] = dist[u[k]] + w[k];if(!vis[v[k]]) Q.push(v[k]);}k = nxt[k];}vis[x] = 0;}
}
int main() {b = read(), e = read(), p = read(), n = read(), m = read();std::memset(fir, -1, sizeof(fir));int x, y, z = 1;for(register int i=1; i<=m; i++) {x = read(), y = read();addedge(x, y, z), addedge(y, x, z);}SPFA(1, dist_1), SPFA(2, dist_2), SPFA(n, dist_n);for(int i=1; i<=n; i++)Ans = std::min(Ans, dist_1[i] * b + dist_2[i] * e + dist_n[i] * p);printf("%d", Ans);
}

转载于:https://www.cnblogs.com/bljfy/p/9494330.html

Luogu P3110 [USACO14DEC]驮运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

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

  3. Piggy Back_KEY

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

  4. Piggy Back

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. ubuntu 14.04安装postgresql最新版本
  2. wireshark安装
  3. svn文件同步到web服务器,即同步到网站根目录
  4. hp-ux mysql_HP-UX安装MySQL
  5. 4k视频分辨率的码流_8K电视来了!但是8K视频仍很遥远
  6. 比特飞使用的是什么主题
  7. 创龙DSP6748开发板驱动LCD屏
  8. 客户端与服务器之间通信收不到信息——readLine()
  9. win11如何禁用后台应用权限 Windows11禁用后台应用权限的设置方法
  10. useCallback()和useMemo()的作用
  11. 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
  12. 《战舰世界》携手汉堡王开启“战舰堡胃战”主题活动
  13. python少儿编程面试题-《与孩子一起学编程》python自测题
  14. ABB机器人示教器无法读取U盘怎么办
  15. [转]机器视觉代码大全
  16. bucket name does not follow Amazon S3 standards
  17. 2023全新纯净版本知识付费微信小程序源码_附搭建教程_亲测可用
  18. 弹性盒子布局(下面有代码)
  19. 查找父类的所有子类 crtl+alt+b
  20. Tableau基础 Tableau 数据集的使用

热门文章

  1. ios识别人脸自动拍照_GitHub - qingweiiOS/FaceRecognition: 活体人脸识别,识别人脸,识别张嘴和摇头动作,并拍照...
  2. 国外PHP免费空间速度评测
  3. 【C语言笔记】【宏定义系列】 判断是否2的n次幂对齐
  4. 图书isbn批量生成一维条码
  5. 用Jekyll生成网页部署的若干问题
  6. 数据库考研信息管理系统
  7. 左右连接和内连接的区别
  8. 重磅发布 | 图像图形学发展年度报告【中国图象图形学报第6期综述专刊】
  9. 人类700万年(震撼的极简人类史)
  10. 什么是软件外包公司?要不要去外包公司?