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

最短路 - ## 邮递员送信

题目描述

有一个邮递员要送东西,邮局在节点 \(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 \leq n \leq 200\)
  • 对于 \(100\%\) 的数据,\(1 \leq n \leq 10^3\)\(1 \leq m \leq 10^5\)\(1\leq u,v \leq n\)\(1 \leq w \leq 10^4\)。输入保证任意两点都能互相到达。

思路

  1. 去程:从 1 到各个点的最短路径(单源最短路)。
    回程:从各个点回到 1 的最短路径(多源汇点最短路)。
    2 . \(dist1[i] =min(dist1[j]+w[j][i])\) , \(dist1[i]\): 从 \(1\)\(i\) 的最短路径
    \(dist2[i]=min(w[i][j]+ dist2[j])\), \(dist2[i]\): 从 \(i\)\(1\) 的最短路径
  2. \(Ans=\sum_{i=1}^{i<=n}(dist1[i]+dist2[i])\)
#include <bits/stdc++.h>
using namespace std;
const int INF=1e9;
int n,m,w[1002][1002],dist1[1002],dist2[1002];
bool Flg[1001];int main() {scanf("%d%d", &n,&m);memset(w,0x3f,sizeof(w));for (int i=1;i<=m;i++) {int x,y,z; cin>>x>>y>>z;w[x][y]=min(w[x][y],z);}for (int i=1;i<=n;i++) dist1[i]=INF;dist1[1]=0;for (int k=1;k<n;k++) {int Min=INF,id=0;for (int i=1;i<=n;i++)if (!Flg[i] && dist1[i]<Min) id=i,Min=dist1[i];Flg[id]=1;for (int i=1;i<=n;i++)if (!Flg[i] && dist1[i]>dist1[id]+w[id][i])dist1[i]=dist1[id]+w[id][i];}memset(Flg,0,sizeof(Flg));for (int i=1;i<=n;i++) dist2[i]=INF;dist2[1]=0;for (int k=1;k<n;k++) {int Min=INF,id=0;for (int i=1;i<=n;i++)if (!Flg[i] && dist2[i]<Min) id=i,Min=dist2[i];Flg[id]=1;for (int i=1;i<=n;i++)if (!Flg[i] && dist2[i]>w[i][id]+dist2[id])dist2[i]=dist2[id]+w[i][id];}long long Ans=0;for (int i=1;i<=n;i++) Ans+=dist1[i]+dist2[i];cout<<Ans<<endl;return 0;
}
http://www.jsqmd.com/news/429267/

相关文章:

  • 2026海外求职机构哪家成功率高:名企资源+导师实力测评(必看) - 品牌排行榜
  • 2026年2月中国网站建设公司推荐榜:十大靠谱口碑供应商 - 资讯焦点
  • 2026年3月京东E卡回收平台精选榜单|收券宝为何成为行业标杆 - 资讯焦点
  • 2026年3月京东E卡回收平台深度测评|收券宝凭三大优势登顶榜首 - 资讯焦点
  • leetcode172.阶乘后的零
  • RuVector:自学习的高性能矢量数据库 [特殊字符]
  • 2026年3月京东E卡回收平台排行榜TOP5|安全高效首选收券宝 - 资讯焦点
  • 2026年卡券回收平台综合实力排行榜,收券宝稳居榜首 - 资讯焦点
  • LangGraph 实战指南:从零构建一个会“思考”的 AI 智能体
  • C++ 中 构造函数 之二
  • 2026上海家政数字化趋势观察:行业正在从“流量竞争”走向“履约竞争”
  • 2026年工程承包商户外场景电动遮阳帘优质推荐榜 - 资讯焦点
  • Task12:哈希表
  • 2026年高性价比卡券回收平台排行榜,收券宝兼顾实惠与省心 - 资讯焦点
  • C++ 中 构造函数 之一
  • Task11:分治
  • 2026年安全高效卡券回收平台排行榜,收券宝凭实力领跑 - 资讯焦点
  • 【解决方案】VMware Ubuntu 22.04 虚拟机无法与主机文件交互解决方案
  • 简单的ai问答助手Flask+Web
  • PhysioDSP:一个面向可穿戴设备的 Python 信号处理库
  • NMN哪个牌子效果最好?奥本元NMN测评:对比万元级大牌,揭秘抗衰界的“性能猛兽” - 资讯焦点
  • 星计划(佛山)网络有限公司简介 - 资讯焦点
  • Task08:搜索
  • Python中的字符类型
  • Java小白程序员的互联网大厂面试之旅——从Spring Boot到分布式缓存
  • 窗帘上的 MV :从静态布料到动态视频材质 - 行人-
  • Task07:双指针
  • 华为OD机考双机位C卷 - 矩阵匹配 (Java Python JS GO C++ C)
  • 虚拟资产:数字时代的新型价值载体
  • 医美机构如何在AI问答中被自然推荐,有专业GEO服务商可以选择吗? - 品牌2026