文章目录
一、最短路径
Floyd算法是一种求解多源最短路问题的算法。
在floyd中,图一般用邻接矩阵存储,边权可正可负,利用动态规划思想,逐步求解出任意两点之间的最短距离。
我们需要准备一个数组d[N][N][N],初始化无穷。
d[k][i][j]表示路径(除去起点和终点)中编号最大的点编号<=k的情况下,点i到点j的最短距离。
c
//注意k作为中转点,必须放到最外层
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);