news 2026/5/1 8:24:16

leetcode 3650(Dijkstra 算法,小根堆)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3650(Dijkstra 算法,小根堆)

3650: 边反转的最小路径总成本

思路:Dijkstra 算法

定义 g[i][j] 表示节点 i 到节点 j 这条边的边权。如果没有 i 到 j 的边,则 g[i][j]=∞。

定义 dis[i] 表示起点 k 到节点 i 的最短路径长度,一开始 dis[k]=0,其余 dis[i]=∞ 表示尚未计算出。

根据 Dijkstra 算法,同一个节点我们只会访问一次,所以「最多可使用一次开关」这个约束是多余的,我们只需把反向边的边权设置为 2wi 即可。答案为 0 到 n−1 的最短路长度。

class Solution { public: int minCost(int n, vector<vector<int>>& edges) { vector<vector<pair<int,int>>> g(n); //邻接表 for(auto& e:edges){ int x=e[0],y=e[1],wt=e[2]; g[x].emplace_back(y,wt); g[y].emplace_back(x,wt*2); } vector<int> dis(n,INT_MAX); //堆中保存 (起点到节点 x 的最短路长度,节点 x) priority_queue<pair<int,int>,vector<pair<int,int>>,greater<>> pq; //小根堆 dis[0]=0; //起点到自己的距离是 0 pq.emplace(0,0); while(!pq.empty()){ auto [dis_x,x]=pq.top(); pq.pop(); if(dis_x>dis[x]) continue; //x之前出堆过 if(x==n-1) return dis_x; //到达终点 for(auto& [y,wt]:g[x]){ auto new_dis_y=dis_x+wt; if(new_dis_y<dis[y]){ dis[y]=new_dis_y; //更新 x 的邻居的最短路 //懒更新堆:只插入数据,不更新堆中数据 //相同节点可能有多个不同的 new_dis_y,除了最小的 new_dis_y,其余值都会触发上面的 continue pq.emplace(new_dis_y,y); } } } return -1; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 2:47:30

RimSort:3个高效技巧让模组智能管理效率提升80%

RimSort&#xff1a;3个高效技巧让模组智能管理效率提升80% 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 你是否曾遇到过《RimWorld》模组加载顺序错误导致游戏崩溃的情况&#xff1f;是否在添加新模组时担心破坏现有配置&#xff1…

作者头像 李华
网站建设 2026/4/24 23:39:14

零基础教程:用Ollama快速部署translategemma-12b-it翻译模型

零基础教程&#xff1a;用Ollama快速部署translategemma-12b-it翻译模型 1. 为什么你需要这个模型——不是所有翻译工具都叫“图文双语通” 你有没有试过把一张英文说明书照片发给翻译工具&#xff0c;结果它只告诉你“这是张图”&#xff0c;然后就沉默了&#xff1f;或者你…

作者头像 李华
网站建设 2026/4/27 23:00:30

QLDependency:青龙面板依赖管理工具的颠覆式创新

QLDependency&#xff1a;青龙面板依赖管理工具的颠覆式创新 【免费下载链接】QLDependency 青龙面板全依赖一键安装脚本 / Qinglong Pannel Dependency Install Scripts. 项目地址: https://gitcode.com/gh_mirrors/ql/QLDependency 你是否也曾在配置青龙面板时&#x…

作者头像 李华
网站建设 2026/4/28 13:37:40

3D动作生成质量评估:HY-Motion 1.0与其他工具对比分析

3D动作生成质量评估&#xff1a;HY-Motion 1.0与其他工具对比分析 1. 为什么3D动作生成需要一次“质的飞跃” 你有没有试过在动画软件里调一个自然的挥手动作&#xff1f;可能要花半小时调整关键帧&#xff0c;反复播放检查手腕旋转是否生硬、重心转移是否合理。再比如游戏公…

作者头像 李华