package floyd;
public class Floyd {
public static void main(String [] args) {
int N = 10000;
int [][] graph= {{0,5,N,7},{N,0,4,2},{3,3,0,2},{N,N,1,0}};
int size=graph[0].length;
int path[][] =new int [size][size];
int A[][] =new int [size][size];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A.length; j++) {
A[i][j]=graph[i][j];
path[i][j]=-1;
}
}
floyd(graph, path, A);
printPath(3, 0, path);
}
public static void floyd(int [][] graph,int[][] path,int [][] A) {
int len = graph.length;
for (int i = 0; i < len; i++) {
for (int j = 0; j < A.length; j++) {
for (int k = 0; k < A.length; k++) {
if (A[i][j]>A[i][k]+A[k][j]) {
A[i][j]=A[i][k]+A[k][j];
path[i][j]=k;
}
}
}
}
}
public static void printPath(int u ,int v ,int path[][]) {
if (path[u][v]==-1) {
System.out.println(path[u][v]);
}else {
int mid=path[u][v];
printPath(u, mid, path);
printPath(mid, v, path);
System.out.println(mid);
}
}
}
java 实现Floyd算法
最新推荐文章于 2023-03-12 16:56:19 发布