关闭页面特效
/*鼠标点击特效*/

多源最短路径 -稠密图 -floyd_warshall

针对稠密图的 Floyd-Warshall 算法
Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Problem)
允许存在权值为负的边

  1. 多源最短路径,floyd_warshall 算法,复杂度 O(n^3)
  2. 求出所有点对之间的最短路径,传入图的大小和邻接阵 n * n
  3. 返回各点间最短距离 min[]和路径 pre[],pre[i][j]记录 i 到 j 最短路径上 j 的父结点
//多源最短路径,floyd_warshall 算法,复杂度 O(n^3) //求出所有点对之间的最短路径,传入图的大小和邻接阵 mat //返回各点间最短距离 min[]和路径 pre[],pre[i][j]记录 i 到 j 最短路径上 j 的父结点 //可更改路权类型,路权可以为负 #define MAXN 200 #define inf 1000000000 typedef int elem_t; //可更改路权类型,路权可以为负 void floyd_warshall(int n, elem_t mat[][MAXN], elem_t min[][MAXN], int pre[][MAXN]) { int i, j, k; for (i = 0; i < n; i++) for (j = 0; j < n; j++) min[i][j] = mat[i][j], pre[i][j] = (i == j) ? -1 : i; for (k = 0; k < n; k++) for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (min[i][k] + min[k][j] < min[i][j]) min[i][j] = min[i][k] + min[k][j], pre[i][j] = pre[k][j]; }

固定中间节点,首尾遍历,更新
没什么技巧,暴力跑


__EOF__

作  者应凌云
出  处https://www.cnblogs.com/CSE-kun/p/14048965.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   干饭啦  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示