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

代码随想录算法训练营第六十天|Bellman_ford 队列优化算法、Bellman_ford之判断负权回路、bellman_ford之单源有限最短路

参考文章均来自代码随想录

Bellman_ford 队列优化算法

参考文章链接

对第 59天中的题目进行优化 详细见参考文章推理步骤
还是用邻接表

#include<iostream>#include<vector>#include<queue>#include<list>#include<climits>usingnamespacestd;structEdge{//邻接表intto;// 链接的节点intval;// 边的权重Edge(intt,intw):to(t),val(w){}// 构造函数};intmain(){intn,m,p1,p2,val;cin>>n>>m;vector<list<Edge>>grid(n+1);vector<bool>isInQueue(n+1);// 加入优化,已经在队里里的元素不用重复添加// 将所有边保存起来for(inti=0;i<m;i++){cin>>p1>>p2>>val;// p1 指向 p2,权值为 valgrid[p1].push_back(Edge(p2,val));}intstart=1;// 起点intend=n;// 终点vector<int>minDist(n+1,INT_MAX);minDist[start]=0;queue<int>que;que.push(start);while(!que.empty()){intnode=que.front();que.pop();isInQueue[node]=false;// 从队列里取出的时候,要取消标记,我们只保证已经在队列里的元素不用重复加入for(Edge edge:grid[node]){intfrom=node;intto=edge.to;intvalue=edge.val;if(minDist[to]>minDist[from]+value){// 开始松弛minDist[to]=minDist[from]+value;if(isInQueue[to]==false){// 已经在队列里的元素不用重复添加que.push(to);isInQueue[to]=true;}}}}if(minDist[end]==INT_MAX)cout<<"unconnected"<<endl;// 不能到达终点elsecout<<minDist[end]<<endl;// 到达终点最短路径}

Bellman_ford之判断负权回路

参考文章链接

题目链接

有负权回路的情况下,一直都会有更短的最短路,所以 松弛 第n次,minDist数组 也会发生改变。

那么解决本题的 核心思路,就是在 kama94.城市间货物运输I 的基础上,再多松弛一次,看minDist数组 是否发生变化。

#include<iostream>#include<vector>#include<list>#include<climits>usingnamespacestd;intmain(){intn,m,p1,p2,val;cin>>n>>m;vector<vector<int>>grid;for(inti=0;i<m;i++){cin>>p1>>p2>>val;// p1 指向 p2,权值为 valgrid.push_back({p1,p2,val});}intstart=1;// 起点intend=n;// 终点vector<int>minDist(n+1,INT_MAX);minDist[start]=0;boolflag=false;for(inti=1;i<=n;i++){// 这里我们松弛n次,最后一次判断负权回路for(vector<int>&side:grid){intfrom=side[0];intto=side[1];intprice=side[2];if(i<n){if(minDist[from]!=INT_MAX&&minDist[to]>minDist[from]+price)minDist[to]=minDist[from]+price;}else{// 多加一次松弛判断负权回路if(minDist[from]!=INT_MAX&&minDist[to]>minDist[from]+price)flag=true;}}}if(flag)cout<<"circle"<<endl;elseif(minDist[end]==INT_MAX){cout<<"unconnected"<<endl;}else{cout<<minDist[end]<<endl;}}

bellman_ford之单源有限最短路

参考文章链接

题目链接

题目中描述是 最多经过 k 个城市的条件下,而不是一定经过k个城市,也可以经过的城市数量比k小,但要最短的路径

对所有边松弛一次,相当于计算 起点到达 与起点一条边相连的节点 的最短距离

本题是最多经过 k 个城市, 那么是 k + 1条边相连的节点

bellman_ford 标准写法是松弛 n-1 次,本题就松弛 k + 1次就好

#include<iostream>#include<vector>#include<list>#include<climits>usingnamespacestd;intmain(){intsrc,dst,k,p1,p2,val,m,n;cin>>n>>m;vector<vector<int>>grid;for(inti=0;i<m;i++){cin>>p1>>p2>>val;grid.push_back({p1,p2,val});}cin>>src>>dst>>k;vector<int>minDist(n+1,INT_MAX);minDist[src]=0;vector<int>minDist_copy(n+1);// 用来记录上一次遍历的结果for(inti=1;i<=k+1;i++){minDist_copy=minDist;// 获取上一次计算的结果for(vector<int>&side:grid){intfrom=side[0];intto=side[1];intprice=side[2];// 注意使用 minDist_copy 来计算 minDistif(minDist_copy[from]!=INT_MAX&&minDist[to]>minDist_copy[from]+price){minDist[to]=minDist_copy[from]+price;}}}if(minDist[dst]==INT_MAX)cout<<"unreachable"<<endl;// 不能到达终点elsecout<<minDist[dst]<<endl;// 到达终点最短路径}
http://www.jsqmd.com/news/854270/

相关文章:

  • 高光谱数据校正避坑指南:从采集到反射率,新手最容易忽略的5个细节(以SUSE数据为例)
  • 【2026年】伺服电机编码器选择指南:增量式vs绝对式,哪个更适合你的项目?
  • Midjourney企业级订阅落地手册(含GDPR合规配置、团队权限分级与成本分摊公式)
  • 告别单一视角:用Transformer融合骨架与轮廓,实战提升步态识别鲁棒性
  • 为什么顶尖技术博主都在悄悄升级Perplexity写作辅助?揭秘3个未公开的上下文增强策略
  • 3分钟上手:Windows上运行安卓应用的终极方案——APK安装器全面指南
  • 国内开通 GPT 会员的自助充值流程记录
  • 学术论文翻译翻车重灾区!Perplexity翻译查询功能如何通过引用锚点保留+LaTeX公式智能隔离实现零失真输出(仅限Pro+订阅用户可见的隐藏模式)
  • 谷歌运营公司热门推荐
  • 7.C# —— 方法返回值、值传递、ref/out/in/params
  • 别再手动点选了!用C#给NX二次开发控件加过滤器,效率翻倍(附两种方法对比)
  • 《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》007、数据准备——ImageNet/COCO数据集预处理与增强策略
  • 电池模型参数辨识避坑指南:HPPC数据拟合时,你的1RC和2RC模型初始值设对了吗?
  • 将Taotoken接入Node.js后端服务,为应用添加智能对话能力
  • Perplexity读书笔记生成效率提升300%:从零到精通的7步工作流拆解
  • 综合能源系统运行状态分析与仿真计算方法【附代码】
  • 意图共鸣科技《AI记忆链商业化白皮书2.0》认知锚定:为什么新概念需要“老参照”
  • 2026 年 GEO 优化服务商TOP5排行榜:如何找到适合自己的geo服务商?geo服务内容介绍? - 互联网科技品牌测评
  • 破壁端网协同:通感一体化(ISAC)如何重构具身智能的“上帝视角”
  • Envoy 详解:云原生时代的高性能网络代理
  • 当GPT-3成为你的领域专家:无监督概念瓶颈模型在ImageNet上的落地思考
  • 意图共鸣科技《AI记忆链商业化白皮书2.0》优雅降级:停机了,但通讯录还在
  • Claude Code 深度工程实践:从个人编码助手到企业级 Agent 工程平台
  • GEO服务商选型攻略:2026 年 GEO 优化服务商如何选?按不同阶段、行业、需求精准匹配指南,附服务介绍 - 互联网科技品牌测评
  • 英雄联盟Akari助手:5个必用功能彻底改变你的游戏方式
  • 如何轻松配置Windows和Office:面向新手的终极解决方案指南
  • 基于 Google Forms 的新型信任型钓鱼攻击机理与防御体系研究
  • 2026年空气悬浮风机厂家深度测评:如何为工业场景匹配最佳方案? - 资讯速览
  • 破解螺母点焊自动化痛点:上海冈兴螺母输送机PASS定制方法论如何提升产能? - 资讯速览
  • 给STM32F407的OLED显示加点料:手把手教你用HAL库I2C显示中文和自定义图形