Floyd求多源最短路径
public void floyd(int[][] nums, int n){
int[][] distance = new int[n][n];//任意两个顶点的距离
//初始化
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if(i == j){
distance[i][j] = 0;
}else{
distance[i][j] = Integer.MAX_VALUE;
}
}
}
//floyd核心代码
for (int k = 1; k <= n; k++) {// 中间的途径顶点k
for (int i = 1; i <= n; i++) {//顶点i
for (int j = 1; j <= n; j++) {//顶点j
if(distance[i][j] > distance[i][k] + distance[k][j]){
distance[i][j] = distance[i][k] + distance[k][j];
}
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
System.out.print(distance[i][j] + " ");
}
System.out.println();
}
}