//这里是弗洛伊德算法的核心部分
//k为中间点
for(k = 0; k < n; k++){
//i为起点
for(i= 0 ; i < n; i++){
//j为终点
for(j =0; j < n; j++){
if(D[i][j] > (D[i][k] + D[k][j])){
D[i][j] = D[i][k] + D[j][w];//更新最小路径
P[i][j] = P[i][k];//更新最小路径中间顶点
}
}
}
}
//这里是弗洛伊德算法的核心部分
//k为中间点
for(k = 0; k < n; k++){
//i为起点
for(i= 0 ; i < n; i++){
//j为终点
for(j =0; j < n; j++){
if(D[i][j] > (D[i][k] + D[k][j])){
D[i][j] = D[i][k] + D[j][w];//更新最小路径
P[i][j] = P[i][k];//更新最小路径中间顶点
}
}
}
}