日期:2014-05-20 浏览次数:21232 次
public void path_FLOYD(int data[][]) {
int i, j, k;
length = data.length;
D = new int[length][length];// D存放每对顶点之间的最短路径值
path = new int[length][length];// p存放每对顶点之间的最短路径
for (i = 0; i < length; i++) {// 各节点之间的初始已知路径及距离
for (j = 0; j < length; j++) {
D[i][j] = data[i][j];//
path[i][j]= -1;
}
}// for
for (k = 0; k < length; k++) {
for (i = 0; i < length; i++) {
for (j = 0; j < length; j++) {
if (i == j)// 对角线上的元素(即顶点自身之间)不予考虑
continue;
if (D[i][k] + D[k][j] < D[i][j]) {// 从i经k到j的一条路径更短
D[i][j] = D[i][k] + D[k][j];
path[i][j]=k;
//System.out.print(" "+path[i][j]);
}
}
}
}
}