NO.96十六届蓝桥杯备战|图论基础-多源最短路|Floyd|Clear And Present Danger|灾后重建|无向图的最小环问题(C++)

多源最短路:即图中每对顶点间的最短路径
![[Pasted image 20250417140843.png]]

floyd算法本质是动态规划,⽤来求任意两个结点之间的最短路,也称插点法。通过不断在两点之间加⼊新的点,来更新最短路。
适⽤于任何图,不管有向⽆向,边权正负,但是最短路必须存在(也就是不存在负环)。

  1. 状态表⽰: f[k][i][j] 表⽰:仅仅经过 [1, k] 这些点,结点 i ⾛到结点 j 的最短路径的⻓度。
  2. 状态转移⽅程:
  • 第⼀种情况,不选新来的点: f[k][i][j] = f[k - 1][i][j]
  • 第⼆种情况,选择新来的点: f[k][i][j] = f[k - 1][i][k] + f[k - 1][k][j]
  1. 空间优化:只会⽤到上⼀层的状态,因此可以优化到第⼀维。
  2. 初始化:
  • f[i][i] = 0
  • f[i][j] 为初始状态下 i 到 j 的距离,如果没有边则为⽆穷。
  1. 填表顺序:
  • ⼀定要先枚举 k ,再枚举 i 和 j 。因为我们填表的时候,需要依赖的是 k - 1 层的状态,因此 k 必须先枚举。
B3647 【模板】Floyd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值