P3110 [USACO14DEC] Piggy Back S

题意

有一张 n n n m m m 边的无向图,Alice 要从 1 1 1 走到 n n n,Bob 要从 2 2 2 走到 n n n。Alice 走一条边需要花费 B B B,Bob 走一条边需要花费 E E E,当他们一起走时,走一条边需要花费 P P P。求他们总花费的最小值。

换句话说,求 min ⁡ i ∈ [ 1 , n ] d i s t ( 1 , i ) × B + d i s t ( 2 , i ) × E + d i s t ( i , n ) × P \min_{i \in [1,n]}dist(1,i) \times B+dist(2,i) \times E + dist(i,n) \times P mini[1,n]dist(1,i)×B+dist(2,i)×E+dist(i,n)×P

思路

容易知道,他们一定会先走到某个点会合,然后一起走到终点。(当然也有可能不会一起走,此时相当于在终点会合)。

我们使用bfs,预处理出 1 , 2 , n 1,2,n 1,2,n 到所有点的最短路,然后枚举会合点 i i i,计算在 i i i 会和的花费,取个最小值即可。

代码

#include <iostream>
#include <queue>
using namespace std;
#define int long long
const int INF = 1e18;signed main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int b, e, p, n, m;cin >> b >> e >> p >> n >> m;vector<vector<int>> G(n);for(int i = 0, u, v; i < m; i++){cin >> u >> v;u--, v--;G[u].push_back(v);G[v].push_back(u);}auto bfs = [&](int s) -> vector<int>{queue<int> q;vector<int> dis(n, 0);vector<bool> vis(n, 0);q.push(s);vis[s] = true;while(q.size()){int u = q.front();q.pop();for(auto &v: G[u])if(!vis[v]){vis[v] = true;dis[v] = dis[u] + 1;q.push(v);}}return dis;};auto disB = bfs(0), disE = bfs(1), disP = bfs(n - 1);int ans = INF;for(int i = 0; i < n; i++)ans = min(ans, disB[i] * b + disE[i] * e + disP[i] * p);cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenJudge 奇数求和

目录 描述思路样例输入样例输出CodeCC 总时间限制: 1000ms 内存限制: 65536kB 描述 计算非负整数 m 到 n&#xff08;包括m 和 n &#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于300。例如 m3, n12, 其和则为&#xff1a;357911…

qcom 平台efuse机器抓取dump log的方法

引言&#xff1a; qcom 平台机器&#xff0c;一旦efuse后机器将无法抓取dump log qcom 原文&#xff1a; efuse机器抓取dump log的方法如下&#xff1a; 一、修改配置文件&#xff1a; 把kamorta_debugpolicy.xml 在配置了debugpolicy&#xff08;加入串号和打开开关&#x…

怎么检查SSL证书是否有效?

SSL证书的有效性对于保护网站数据安全和用户隐私至关重要。然而&#xff0c;有时可能会出现证书过期、无效或被吊销的情况。为了确保网站的安全性&#xff0c;对SSL证书的有效性进行检查至关重要。本文将介绍几种常用的方法来检查SSL证书的有效性&#xff0c;帮助大家有效评估和…

Android Studio Download Gradle 时慢问题解决

1.腾讯gradle 下载&#xff1a;后面拼接版本&#xff08;gradle-8.0-bin.zip&#xff09; https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip 2.Android Studio 配置&#xff1a;setting-->gradle-->Use Gradle from 选择本地文件夹&#xff08;解压后的bi…

前端开发常用的框架有以下几种?

React&#xff1a;由Facebook开发&#xff0c;用于构建用户界面的JavaScript库。它可以用于构建单页面应用和移动应用。 Vue&#xff1a;一套用于构建用户界面的渐进式框架&#xff0c;也是一个基于JavaScript的前端开发框架。Vue易于学习和使用&#xff0c;适用于构建小型到大…

基于Make的c工程No compilation commands found报错

由于安装gcc时只安装了build-essential&#xff0c;没有将其添加到环境变量中&#xff0c;因此打开Make工程时&#xff0c;CLion会产生如下错误&#xff1a; 要解决这个问题&#xff0c;一个方法是将GCC添加到环境变量中&#xff0c;但是这个方法需要修改至少两个配置文件&…

数据结构——约瑟夫环C语言链表实现

约瑟夫环问题由古罗马史学家约瑟夫&#xff08;Josephus&#xff09;提出&#xff0c;他参加并记录了公元66—70年犹太人反抗罗马的起义。在城市沦陷之后&#xff0c;他和40名死硬的将士在附近的一个洞穴中避难。起义者表示“宁为玉碎不为瓦全”&#xff0c;约瑟夫则想“留得青…

dledger原理源码分析(四)-日志

简介 dledger是openmessaging的一个组件&#xff0c; raft算法实现&#xff0c;用于分布式日志&#xff0c;本系列分析dledger如何实现raft概念&#xff0c;以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的日志&#xff0c;包括写入&#xff0c;复制…

liunx下通过设备文件设置串口波特率,并收发

在Linux下&#xff0c;你可以通过串口设备文件设置串口波特率&#xff0c;并进行数据的收发。 确认串口设备文件 首先&#xff0c;确认你要使用的串口设备文件&#xff0c;一般情况下串口设备文件的命名规则为/dev/ttyS0、/dev/ttyS1等&#xff0c;具体的设备文件名可能会有所…

Linux 网络文件系统 NFS:配置与管理指南

Linux 网络文件系统 NFS&#xff1a;配置与管理指南 网络文件系统&#xff08;NFS&#xff09;是一种分布式文件系统协议&#xff0c;允许用户在网络上跨不同计算机和操作系统共享文件和存储资源。NFS 提供了强大的数据共享功能&#xff0c;广泛应用于企业级存储解决方案中。本…

网站SEO百度搜索排名—通过关键字提升网站流量

添加网站关键字 <meta name"keywords" content"系统通过搜索到的关键字XXXXXXXXX"> <meta name"description" content"网站的介绍内容XXXXXXXXXXXXXXXXX"> <title>平台名称XXXXXXX</title> 在 百度站点管理 …

STM32串口通讯(RS232、RS485、TTL)详解

前言 STM32串口&#xff08;Serial Communication Interface&#xff09;是STM32微控制器中用于串行通信的接口&#xff0c;通常指的是USART&#xff08;通用同步异步收发器&#xff09;或UART&#xff08;通用异步收发传输器&#xff09;。这些接口允许STM32微控制器与其他设…

跟我从零开始学STL(STL代码基础01)---string容器

引言 小伙伴们大家好&#xff0c;又到了新的篇章了&#xff0c;感谢大家的支持&#xff01;今天我们要学一个新的篇章&#xff0c;STL。在编程领域&#xff0c;STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C语言中非常重要的一部分。它为我们…

zabbix 学习笔记

文章目录 Zabbix 安装Ubuntu 18.04.1 server 安装Zabbix 4.0Centos7 安装Zabbix3.4Centos7 安装zabbix4.2Centos7.1908安装zabbix 基于ngixDebian11安装zabbix6.0LTS 基于PostgreSQL和NGINXAlmaLinux9.2使用国内清华源在线安装zabbix6.0.18LTS 基于MySQL和NGINXUbunut22.04使用…

crewAI中通过Ollama调用本地模型的两种方式

0 背景 crewAI中默认使用的gpt4的模型&#xff0c; 在环境中配置OPENAI_API_KEY即可使用。 但openai的api毕竟是要花钱的&#xff0c; 况且现在对大陆地区做了封禁&#xff0c; 使用起来不是那么方便。 而Ollama可以方便的运行本地的大模型&#xff0c; 既不用花钱&#xff0c…

图文讲解IDEA如何导入JDBC驱动包

前言 学习JDBC编程,势必要学会如何导入驱动包,这里笔者用图文的方式来介绍 视频版本在这里 50秒教你怎么导入驱动包然后进行JDBC编程的学习_哔哩哔哩_bilibili 忘记录音频了,大伙凑合着看 下载驱动包 https://mvnrepository.com/artifact/mysql/mysql-connector-java 去中…

GB28181设备如何添加

简介 此篇描述视频网关&#xff08;中间件&#xff09;接入大华、海康、ONVIF设备&#xff08;NVR、摄像头&#xff09;、GB28181设备步骤和流程。 阅读本文档之前建议先阅览视频网关&#xff08;中间件&#xff09;用户使用手册。 接入方式和说明 视频网关&#xff08;中间…

Flutter——最详细(GestureDetector)使用教程

背景 组件手势检测&#xff0c;单击、双击、长按、松开、移动、横向拖动、竖向拖动等事件 属性作用onTap单击onDoubleTap双击onLongPress长按onPanUpdate拖动实时更新onHorizontalDragDown横向点击onVerticalDragDown竖向点击 GestureDetector(onTap: () > setState(() >…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

ZP-UHZ系列顶装式磁翻板液位计

一、用途及特点 ZP-UHZ系列磁浮子液位计是一种能就地指示或远传显示与控制的物位仪表&#xff0c;它广泛用于石油、化工、轻工、电力、核工业以及食品、医药等工业中&#xff0c;对各种塔、罐、槽、箱等容器中介质的液位进行指示和控制。 ZP-UHZ系列磁浮子液位计的指示部分及发…