东方博宜OJ 2379:最少交通费 ← 堆优化 Dijkstra + 链式前向星

news/2026/1/19 13:12:19/文章来源:https://www.cnblogs.com/triwa/p/19501206

【题目来源】
https://oj.czos.cn/p/2379
https://www.acwing.com/problem/content/852/

【题目描述】
Mar 星球上共有 n 个城市(编号为 1~n),城市之间为了方便交通修建了 m 条单向高速公路。
有些公路是为了交通方便连接了 2 个不同的城市,有些公路是为了观光方便,从一个城市出发最后还会回到该城市。两个城市之间、以及从本市出发回本市的道路都可能有多条。
作为交通部新来的程序员,你接到了一个第一个任务:已知所有道路起止点以及走该条路需要花的过路费,计算出从 1 号城市到 n 号城市的最低花费?

【输入格式】
第 1 行有 2 个整数 n 和 m(1≤n, m≤10^5)
接下来 m 行,每行有 3 个整数 u、v、p,表示从有一条道路从 u 市连到 v 市,走该条路需要花费 p 元。(1≤u, v≤n,1≤p≤10^4)。​​​​​​​

【输出格式】
输出一个整数,代表从 1 号城市到 n 号城市的最少交通费。如果根据给定的数据发现,从 1 号城市无法到达 n 号城市,请输出 -1。​​​​​​​

【输入样例】
3 4
1 2 1
1 3 3
2 3 1
1 1 2

【输出样例】
2

【数据范围】
1≤n, m≤10^5,1≤u, v≤n,1≤p≤10^4

【算法分析】
● Dijkstra 算法
Dijkstra 算法是一种用于解决有权图中单源最短路径问题的经典算法,由荷兰计算机科学家 Edsger W. Dijkstra 于 1956 年提出。以下是该算法的核心要点:
(1)适用范围‌:适用于带非负权重的有向图或无向图,无法处理含负权边的图。
(2)核心思想‌:采用贪心策略,逐步扩展离源点最近的未访问节点,更新邻接节点的最短距离。

● Dijkstra 算法的堆优化
(1)朴素 Dijkstra 算法每次需遍历所有节点寻找距离起点最近的未访问节点,造成大量冗余计算,致朴素 Dijkstra 算法的总时间复杂度为 O(n²)。特别的,在节点数较多时(如 n=10⁵)性能急剧下降。
(2)而堆优化 Dijkstra 算法通过优先队列(小根堆)将查找最小距离节点的操作从 O(n) 优化至 O(1),可使堆优化 Dijkstra 算法的总时间复杂度优化为 O(mlogn)(m为边数)。
(3)堆优化的本质是通过‌小根堆动态维护最小距离节点‌和‌避免全局扫描‌,将算法效率从 O(n²) 优化至 O(mlogn),尤其适用于稀疏图或大规模节点场景。

● 链式前向星:https://blog.csdn.net/hnjzsyjyj/article/details/139369904
“链式前向星”就是“多单链表”,每条单链表基于“头插法”并用 e[]、ne[]、h[] 、val[] 等数组进行模拟创建。其中:
e[idx]:存储序号为 idx 的边的终点值
ne[idx]:存储序号为 idx 的边指向的边的序号(模拟链表指针)‌
h[a]:存储头结点 a 指向的边的序号
val[idx]:存储序号为 idx 的边的权值(可选)

● 本题 Dijkstra 算法的两种朴素实现
基于链式前向星的实现,详见:https://blog.csdn.net/hnjzsyjyj/article/details/147467751​​​​​
基于邻接矩阵的实现,详见:https://blog.csdn.net/hnjzsyjyj/article/details/147463593

【算法代码】

#include <bits/stdc++.h>
using namespace std;typedef pair<int,int> PII; //<dis,idx>
const int inf=0x3f3f3f3f;
const int N=2e5+5;
int h[N],e[N<<1],ne[N<<1],val[N<<1],idx;
int st[N],dis[N];
int n,m;void add(int a,int b,int w) {val[idx]=w,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}int dijkstra() {priority_queue<PII,vector<PII>,greater<PII>> q;memset(dis,inf,sizeof dis);dis[1]=0;q.push({0,1}); //<dis,idx>while(!q.empty()) {auto t=q.top();q.pop();int u=t.second; //idxif(st[u]) continue;st[u]=true;for(int i=h[u]; i!=-1; i=ne[i]) {int j=e[i];if(dis[j]>dis[u]+val[i]) {dis[j]=dis[u]+val[i];q.push({dis[j],j});}}}if(dis[n]==inf) return -1;return dis[n];
}int main() {memset(h,-1,sizeof(h));cin>>n>>m;while(m--) {int a,b,c;cin>>a>>b>>c;add(a,b,c);}cout<<dijkstra()<<endl;return 0;
}/*
in:
3 3
1 2 2
2 3 1
1 3 4out:
3
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/147476181
https://blog.csdn.net/hnjzsyjyj/article/details/147467751
https://blog.csdn.net/hnjzsyjyj/article/details/139369904
 

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

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

相关文章

一条龙服务的封头厂家哪家好,河南有推荐吗? - 工业品牌热点

随着工业设备对核心部件质量要求的不断提升,封头作为压力容器、锅炉等设备的安全心脏,其选择与采购成为众多企业的关键决策点。本文围绕企业关注的封头采购核心问题展开问答,结合新乡市光大机械有限公司的实践经验,…

计算机毕业设计 | SpringBoot+vue图书电子商务网站 图书商城(附源码+论文)

1&#xff0c;绪论 1.1 研究背景 互联网时代不仅仅是通过各种各样的电脑进行网络连接的时代&#xff0c;也包含了移动终端连接互联网进行复杂处理的一些事情。传统的互联网时代一般泛指就是PC端&#xff0c;也就是电脑互联网时代&#xff0c;但是最近几十年&#xff0c;是移动…

使用AI开源免费系统,精准识别店内可疑人员行为

如果你手里有零售门店AI无人巡店需求,并且想免费体验这套系统,赶紧去开源社区下载这个项目,开源项目的地址我放在的文章最后。 技术实现:基于轻量级CNN与时序分析的组合识别 思通数科AI视频卫士致力于提供一个轻量…

计算机毕业设计 | SpringBoot+vue健身房管理系统(附源码+论文)

1&#xff0c;研究背景 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在这个新的时代&#xff0c;各行各业都充分考虑互联网是否能与本行业进行结合…

全网最全9个AI论文平台,助继续教育学生轻松搞定论文写作!

全网最全9个AI论文平台&#xff0c;助继续教育学生轻松搞定论文写作&#xff01; AI 工具如何让论文写作更高效&#xff1f; 在当前的学术环境中&#xff0c;继续教育学生面临着越来越多的挑战&#xff0c;尤其是论文写作这一环节。传统的写作方式不仅耗时耗力&#xff0c;还容…

代码随想录算法训练营第五十九天|dijkstra(堆优化版)精讲,Bellman_ford 算法精讲

Bellman_ford 算法精讲bellman ford算法的三部曲&#xff1a;1. initialization&#xff08;可以设置n1点&#xff09;1到1的距离为0&#xff0c; 1到2&#xff0c; 1到3&#xff0c;。。1到n的距离为∞2. 进行&#xff08;v-1&#xff09;轮松弛(relax the edge) (对每一条边…

基于51/STM32单片机激光测距超声波液位倒车防撞雷达图像显示无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机激光测距超声波液位倒车防撞雷达图像显示无线设计超声波测距蜂鸣器报警波动开关C51-10 超声波测距数码管显示蜂鸣器报警按键阈值设置C51-60 水位-超声波水位OLED屏舵机水泵蜂鸣器按键高低阈值加水排水C51-61XN 水位-蓝牙无线超声波水位OLED屏舵机水泵蜂鸣器按…

基于STM32单片机智能低压断路器交流电压电流温度检测设计24-259(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能低压断路器交流电压电流温度检测设计24-259(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 24-259、STM32智能低压断路器设计-TFT1.44-交流电压电流互感器-DS18B20-KEY-BELL 产品功能描述&#xff1a; 本设…

基于STM32单片机智能二维码条形码门禁控制语音播报设计24-304(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能二维码条形码门禁控制语音播报设计24-304(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码24-304、STM32的二维码门禁控制系统设计-GM65二维码-电磁-ISD1820 产品功能描述&#xff1a; 本设计由STM32F103C8T…

芦曲泊帕Lusutrombopag在特定人群中的剂量调整与血栓风险监测

芦曲泊帕&#xff08;Lusutrombopag&#xff09;在特定人群中的应用需根据个体特征调整剂量&#xff0c;并加强血栓风险监测&#xff0c;以确保治疗的安全性和有效性。特定人群剂量调整&#xff1a;个体化方案&#xff0c;精准治疗Child-Pugh C级肝硬化患者&#xff1a;由于肝功…

基于STM32单片机智能垃圾桶图像识别分类满溢报警无线APP设计S96(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能垃圾桶图像识别分类满溢报警无线APP设计S96(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码STM32-S96-图像识别垃圾分类4组舵机满溢报警按键分类TFT彩屏(无线方式选择) STM32-S96N无无线-无APP板: STM32-S9…

我们的系统经常遇到DAO360.DLL丢失找不到问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

计算机毕业设计springboot课堂教学管理系统 基于SpringBoot的智慧课堂互动管理平台 SpringBoot+MySQL构建的混合式教学综合系统

计算机毕业设计springboot课堂教学管理系统5l4h8y1j&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“互联网教育”快速演进的当下&#xff0c;传统课堂的纸质签到、口头布置作…

基于STM32单片机智能白光LED可见光通信音频传输系统设计25-072(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能白光LED可见光通信音频传输系统设计25-072(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码25-072、基于STM32单片机智能白光LED可见光通信音频传输系统设计 产品功能描述&#xff1a; 基于白光LED可见光通信…

基于STM32单片机智能摄像头识别病虫害诊断预警蓝牙APP设计22-077(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能摄像头识别病虫害诊断预警蓝牙APP设计22-077 22-077、 STM32F103ZET6智能化识别植物病虫害诊断及快速预警设计-TFT2.8-摄像头-DHT11-蓝牙产品功能描述&#xff1a; 本系统由STM32F103ZET6单片机核心板&#xff08;可插TF卡&#xff09;电路2.8寸TFT彩屏显示…

全场景音视频赋能:三大综合管理平台技术与落地实践

综合管理平台系列产品以现代音视频技术发展趋势及实际应用需求为导向&#xff0c;依托高清混合矩阵搭建基础架构&#xff0c;针对不同行业场景的差异化需求迭代优化&#xff0c;形成集信号处理、功能集成、场景适配于一体的综合处理系统。该系列包含分布式交互管理平台、图像综…

计算机毕业设计springboot零食销售管理信息系统的设计与开发 基于SpringBoot的休闲食品线上进销存平台构建 SpringBoot驱动的零食电商运营支撑系统研发

计算机毕业设计springboot零食销售管理信息系统的设计与开发e1r04j82 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。当“宅经济”与“即时满足”碰撞&#xff0c;零食赛道爆发式…

FTP 快捷批处理混淆钓鱼方式利用和防范

FTP 快捷批处理混淆钓鱼是一种文件分片 + 合法进程代理的攻击手法,核心是通过.link快捷方式调用系统自带的ftp.exe,配合分片存储的批处理脚本,实现恶意载荷的隐蔽执行。免责声明:本文所涉及的技术仅供学习和参考,…

70_Spring AI 干货笔记之 STDIO 与 SSE MCP 服务器

一、STDIO 与 SSE MCP 服务器 STDIO 和 SSE MCP 服务器支持多种传输机制,每种都有专门的启动器。 使用 STDIO 客户端或 SSE 客户端连接 STDIO 和 SSE 服务器。 1.1 STDIO MCP 服务器 支持完整 MCP 服务器功能,采用 STDIO 服务器传输。 <dependency> <groupId>…

2026年湖北襄阳、十堰等地家用别墅电梯生产商排名,哪家更靠谱? - 工业品牌热点

本榜单依托行业深度调研与真实用户口碑,结合别墅电梯用户核心痛点(空间适配、噪音干扰、安全隐患、定制不足等),筛选出五家专业家用别墅电梯生产商,为家庭垂直出行需求提供客观选型参考,助力精准匹配适配的服务伙…