赞
踩
Floyd算法是一种求解多源最短路问题的算法。
在floyd中,图一般用邻接矩阵存储,边权可正可负,利用动态规划思想,逐步求解出任意两点之间的最短距离。
我们需要准备一个数组d[N][N][N],初始化无穷。
d[k][i][j]表示路径(除去起点和终点)中编号最大的点编号<=k的情况下,点i到点j的最短距离。
//注意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]);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。