Floyd算法用于求任意两点间的最短路,算法使用邻接矩阵存储有边
/*============================================================*\
* Floyd 算法 2014.7.19----basement_boy
* 任意两点之间的最短路,O(V^3)
* 可以用在有向,无向图;和带负权边的图
* INIT:初始化时注意,若i,j之间没有边,则dist[][]初始化为MAXL
* 函数调用后dist[][]数组中每一个元素表示i,j之间的最短路长度
\*============================================================*/
const int MAXL = 0x3f3f3f3f; //假设的无穷远
int n; //点数
const int N = 100; //问题情况中最大的点数——————由实际问题情况修改
int dist[N+5][N+5];
void floyd(){
for(int k=0 ; k<n ; k++){
for(int i=0 ; i<n ; i++){
for(int j=0 ; j<n ; j++){
if( i!=j && dist[i][j] > dist[i][k]+dist[k][j] )
dist[i][j] = dist[i][k]+dist[k][j];
}
}
}
}