日期:2014-05-20 浏览次数:21068 次
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]); } } } } }