当前位置: 首页 > news >正文

P1629 邮递员送信

P1629 邮递员送信 - 洛谷

题目描述

有一个邮递员要送东西,邮局在节点 1。他总共要送 n−1 样东西,其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 m 条道路。这个邮递员每次只能带一样东西,并且运送每件物品过后必须返回邮局。求送完这 n−1 样东西并且最终回到邮局最少需要的时间。

输入格式

第一行包括两个整数,n 和 m,表示城市的节点数量和道路数量。
第二行到第 (m+1) 行,每行三个整数,u,v,w,表示从 u 到 v 有一条通过时间为 w 的道路。

输出格式

输出仅一行,包含一个整数,为最少需要的时间。

输入输出样例

输入 #1

5 10
2 3 5
1 5 5
3 5 6
1 2 8
1 3 8
5 3 4
4 1 8
4 5 3
3 5 6
5 4 2

输出 #1

83

说明 / 提示

对于 30% 的数据,1≤n≤200。
对于 100% 的数据,1≤n≤103,1≤m≤105,1≤u,v≤n,1≤w≤104,输入保证任意两点都能互相到达。

思路:
注意2->1的距离,再反向建立图中,是1->2的距离,所以在反向建立图中,1是起点。

代码:
 

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII; 
const int MAXN = 10010;   
const int INF = 0x3f3f3f3f;
vector<PII> ori[MAXN];//原图 
vector<PII> rever[MAXN];//反向图 
int dist1[MAXN];//原图的最短路径 
int dist2[MAXN];//反向图的最短路径 
bool visited[MAXN];
void dijkstra(int start, vector<PII> adj[], int dist[]) 
{memset(dist, 0x3f, sizeof(int) * MAXN);memset(visited, false, sizeof(visited));priority_queue<PII, vector<PII>, greater<PII>> pq;dist[start] = 0;pq.push(PII(0, start));while (!pq.empty()) {auto temp = pq.top();  pq.pop();int currentDist = temp.first; int u = temp.second;  if (visited[u]) continue;visited[u] = true;for (auto e : adj[u]) {int v = e.first;  int w = e.second;if (dist[v] > dist[u] + w) {dist[v] = dist[u] + w;pq.push(PII(dist[v], v));}}}
}
int main() 
{int n, m;cin >> n >> m;for (int i = 0; i < m; ++i) {int u, v, w;cin >> u >> v >> w;ori[u].push_back({v, w});rever[v].push_back({u, w});}dijkstra(1, ori, dist1);dijkstra(1, rever, dist2);int total = 0;for (int i = 2; i <= n; ++i) {total += dist1[i] + dist2[i];}cout << total << endl;return 0;
}

http://www.dtcms.com/a/318303.html

相关文章:

  • 【RabbitMQ】高级特性—发送方确认详解
  • 【科研绘图系列】R语言绘制瀑布图
  • 院校机试刷题第二十一天|回顾代码随想录第十六天、
  • google官方性能文档:Android 动态性能框架优化散热和 CPU 性能-Thermal API部分
  • 短剧小程序系统开发:技术驱动下的内容创新之路
  • 2025年08月 GitHub 热门项目推荐
  • 1深度学习Pytorch-pytorch、tensor的创建、属性、设备和类型转换、数据转换、常见操作(获取元素、元素运算、形状改变、相乘、广播)
  • 【31】C++实战篇——C++ 从数组里找出相邻两个波谷之间的主波峰的y值和其对应下标i,考虑到波形的上升和下降情况
  • 【AI总结】python连接MySQL(5)- 高级数据库配置与连接器设计
  • go语言变量2
  • 开疆智能ModbusTCP转Profinet网关连接安川YRC1000机器人配置案例
  • 嵌入式处理器指令系统:精简指令集RISC与复杂指令集CISC的简介,及区别
  • Cervantes:面向渗透测试人员和红队的开源协作平台
  • 勇芳字体查看器 v1.0 免费版
  • 当前就业形势下,软件测试工程师职业发展与自我提升的必要性
  • Kubesphere搜索镜像问题
  • 深度解析|资源位管理工具如何重构媒体商业化效率?
  • 飞书对接E签宝完整方案
  • AI浪潮下,FPGA如何实现自我重塑与行业变革
  • 动态代理常用的两种方式?
  • 开发教育全链路管理系统 + 微信小程序,为各类教育主体注入数字化动力!
  • LeetCode 面试经典 150_数组/字符串_O(1)时间插入、删除和获取随机元素(12_380_C++_中等)(哈希表)
  • Conda虚拟环境安装包
  • 信号处理:信号产生
  • 2025年WiFi技术白皮书:全球物联网无线通信的关键创新
  • Codeforces Round 987 (Div. 2)
  • [特殊字符]海尔考察游学 | 解码人才培养秘籍
  • 长时间面对电脑屏幕需要使用防晒霜吗?
  • js中的 slice、splice、split、substring、substr
  • 面试题:使用class类来写工个五子棋