Floyd算法(知识点+模板)

发布时间:2026/8/30 16:32:07

Floyd算法(知识点+模板)
Floyd算法知识点模板一、Floyd 和Dijkstra对比1. 两种最短路的核心区别Dijkstra单源最短路——一个起点跑向所有终点Floyd多源最短路——任意一点到任意一点的最短路径如果题目需要输出整张图的「点到点最短距离矩阵」唯一首选就是 Floyd。2. Floyd 独有优势Dijkstra 做不到支持负权边无负权环即可代码极简、无需建复杂邻接表天然维护全局最短路矩阵适合稠密图、小规模图算法类型负权复杂度适用场景Dijkstra单源不支持O((nm)logn)大图、稀疏图、多次单查Floyd多源支持O(n³)小图、稠密图、全局矩阵二、 Floyd 核心思想Floyd 的本质枚举每一个点作为「中转点」不断松弛更新全局最短路。假设你在城市里走路想找A → B的最短路径。最朴素想法直接走 A→B。但 Floyd 的思考是我能不能先绕一下别的中转站让路程更短比如A → C → B 会不会比 A→B 更近A → D → B 会不会更短A → C → D → B 会不会更短所有最短路一定是「经过若干中转点」的最优结果。三、Floyd 是动态规划Floyd 不是暴力是二维 DP 滚动优化1. 原始 DP 状态定义dp[k][i][j]含义只允许经过前k个点作为中转时i到j的最短距离2. DP 转移方程d p [ k ] [ i ] [ j ] min ⁡ ( d p [ k − 1 ] [ i ] [ j ] , d p [ k − 1 ] [ i ] [ k ] d p [ k − 1 ] [ k ] [ j ] ) dp[k][i][j] \min(dp[k-1][i][j],\ dp[k-1][i][k] dp[k-1][k][j])dp[k][i][j]min(dp[k−1][i][j],dp[k−1][i][k]dp[k−1][k][j])方案1不经过 k 点沿用旧最短路dp[k-1][i][j]从i到j。方案2经过 k 点中转i→k→j从i到k再到j。两者取最小值就是当前最优解3. 空间优化最终版 Floyd观察发现第k层只依赖k-1层可以压掉一维二维滚动数组dist[i][j]最终公式d i s t [ i ] [ j ] min ⁡ ( d i s t [ i ] [ j ] , d i s t [ i ] [ k ] d i s t [ k ] [ j ] ) dist[i][j] \min(dist[i][j],\ dist[i][k] dist[k][j])dist[i][j]min(dist[i][j],dist[i][k]dist[k][j])Floyd 只有三重循环外层 k 是 DP 阶段内层i、j是状态遍历。四、算法完整流程步骤1初始化距离矩阵自己到自己dist[i][i] 0有边相连赋值边权无边赋值无穷大INF步骤2三层循环顺序绝对不能乱外层k中转点DP阶段中层i起点内层j终点核心逻辑每次新增一个中转点全局更新所有点对最短路k 必须在最外层k 是 DP 的阶段动态规划枚举每一个中转点步骤3松弛更新先判断他们不是最大值如果i→k→j比直接i→j更短就更新五、题目练习【模板】B3647 【模板】Floyd - 洛谷#includebits/stdc.h using namespace std; const int N105; const int INF0x3f3f3f3f; // 无穷大数值很大相加不会int溢出 int dist[N][N]; // dist[i][j] 保存i到j的最短距离 int n,m; // n点数m边数 // Floyd‑Warshall算法求任意两点最短路 void floyd(){ // k是中转点必须放在最外层循环 for(int k1;kn;k){ for(int i1;in;i){ // i起点 for(int j1;jn;j){ // j终点 // 只有i→k 和 k→j 都可达才可以更新i→j if(dist[i][k]!INFdist[k][j]!INF){ dist[i][j]min(dist[i][j],dist[i][k]dist[k][j]); } } } } } int main(){ cinnm; // 初始化距离矩阵 for(int i1;in;i){ for(int j1;jn;j){ if(ij){ // 自己到自己距离为0 dist[i][j]0; } else{ // 初始其它点之间不可达赋值无穷大 dist[i][j]INF; } } } // 读入m条无向边 for(int i1;im;i){ int u,v,w; cinuvw; // min处理重边保留两点之间权值最小的边 dist[u][v]min(dist[u][v],w); dist[v][u]min(dist[v][u],w); } floyd(); // 执行Floyd求全源最短路 // 输出距离矩阵 for(int i1;in;i){ for(int j1;jn;j){ if(dist[i][j]INF) // 两点不可达输出0 cout0 ; else coutdist[i][j] ; } coutendl; } return 0; }Floyd能处理负权不能处理负权环存在负权环时路径可以无限变短最短路不存在。判定负权环跑完后dist[i][i] 0即为存在负环。

相关新闻

Linux基础IO(open等文件相关系统调用)

Linux基础IO(open等文件相关系统调用)

2026/8/30 16:32:07

一、文件是什么:内容 属性 文件 内容(数据) 属性(元数据) 属性包括:权限、大小、时间、属主、类型等,由内核记录0 KB 的文件也占磁盘空间——内容为空,但属性(元数据&…

Modbus RTU 与 Modbus TCP:它们有什么区别?

Modbus RTU 与 Modbus TCP:它们有什么区别?

2026/8/30 16:32:07

目录 Modbus RTU Modbus TCP 物理上的区别是什么 Modbus 能否成为一种简单且低成本的解决方案 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 Modbus RTU 和 Modbus TCP 都是工业自动化中常用的通信协议。然而&#xff0c…

十年车机性能优化经验总结系列(五):车机性能优化八维清单

十年车机性能优化经验总结系列(五):车机性能优化八维清单

2026/8/30 16:22:06

《十年车机性能优化》系列前四篇都在聊系统整体维度的打法,这篇切到 App 维度——聊聊一个车机应用自己在代码层能折腾点什么。 做车机这么多年,性能这摊事我来回踩过不少坑。这份清单是我站在龙鹰一号 / 8155 / 8295 这类低内存平台的视角,把…

srtp.rar实战:libsrtp编译与音视频SRTP加密集成排坑指南

srtp.rar实战:libsrtp编译与音视频SRTP加密集成排坑指南

2026/8/30 17:32:09

简介:实时音视频通信中,数据加密是保障内容安全的关键环节。SRTP(安全实时传输协议)在RTP基础上提供机密性、完整性与抗重放保护,广泛用于WebRTC、监控流加密、直播连麦等场景。libsrtp作为成熟的开源实现,…

Bending Spoons 收购 Airtable:用户应对策略与迁移评估指南

Bending Spoons 收购 Airtable:用户应对策略与迁移评估指南

2026/8/30 17:32:09

Bending Spoons 收购 Airtable,交易金额约 22 亿美元。这件事如果只当普通科技新闻扫一眼,很容易滑过去。但对正在用 Airtable 管理项目、客户、库存,甚至把自动化流程跑在它上面的团队来说,这其实是一条需要停下来做一次“系统体…

AI Agent从Demo到独立服务:任务调度、状态持久化与可观测性改造

AI Agent从Demo到独立服务:任务调度、状态持久化与可观测性改造

2026/8/30 17:32:09

Manus 这类 AI 智能体产品成为热点后,最常见的讨论是它的执行能力和商业前景。当“独立运营”这类消息出现时,技术团队的第一反应往往是另一个问题:一个能在演示视频里跑通的 Agent,距离一个能独立接受真实用户流量、持续迭代、出…

运行时行为差异对比:用RealDiff守护PR语义一致的工程实践

运行时行为差异对比:用RealDiff守护PR语义一致的工程实践

2026/8/30 17:32:09

做 Code Review 的时候,最怕遇到的问题往往不是代码格式,也不是变量命名,而是“代码看起来没变,行为却悄悄变了”。尤其在一个动辄改动十几个文件、横跨多个模块的 Pull Request 里,评审者很难只凭肉眼判断一次重构是否…

AI辅助基金申请书写作:从提效到防思路窄化的工程化实践

AI辅助基金申请书写作:从提效到防思路窄化的工程化实践

2026/8/30 17:32:09

基金申请书大概是科研写作里最“结果导向”的文体之一。同一个研究想法,表述方式不同,评审感受可能完全不同。所以当生成式 AI 进入科研工作流之后,很多人第一反应就是:能不能让 AI 帮我写基金申请书? 最近围绕“AI-a…

C盘满了怎么清理?磁盘空间分析与系统清理完整指南

C盘满了怎么清理?磁盘空间分析与系统清理完整指南

2026/8/30 17:22:09

C盘满了怎么清理,是 Windows 用户遇到频率最高的空间问题之一。不少人一看到“C盘红了”,第一反应是打开各种清理软件一键扫描,结果要么清不出多少空间,要么误删了系统文件导致软件无法运行。真正稳妥的做法是先搞清楚空间被谁占用…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…