[编程笔记]-Floyd
前言
你以为这篇最短路和其他最短路差了一天的时间吗?不,实际上只差了一个小时(ノへ ̄、)
现在是00: 24
半夜三更发癫很正常,如有发癫您就别管那点鸡毛小事了hhh
作用
用于多源汇最短路问题,也就是有多个源点的最短路问题。
实现
- 邻接矩阵存储所有的边
- 直接上三重循环。啊就是找起点终点和跳板点然后通过跳板点更新dis嘛不想解释了看代码吧。
1
2
3
4
5
6
7for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
}
}
你以为它是暴力?哈哈哈其实别人是基于动规的hhh。
这才是它的本来面貌:d[k][i][j]=d[k-1][i][k]+d[k-1][k][j]
然后大佬把第一维给优化掉了hhh
所以要先循环k的hhh
代码
其实模板上面已经给了,所以这里直接上例题吧。
1 |
|
完结撒花o( ̄︶ ̄)o
[编程笔记]-Floyd
http://githarlem.github.io/2024/08/04/Floyd/