package
shortestpath;
public class ShortestPath ... {
static int node;//节点总数
static int[][] array;
//初始化图
static int[][] init(int node)...{
array = new int[node][node];
for(int i = 0; i< node;i++)
...{ for(int j = i;j <node; j++)...{
array[i][j] = (int) (Math.random() * node + 1);//防止相异的两点距离为0的情况出现
array[j][i] = array[i][j];
}
array[i][i] = 0;
}
return array;
}
//注意:k 的循环要在最外层
static int[][] shortestpath()...{
for(int k =0;k < node; k++)...{
for(int i = 0; i< node; i++)...{
for(int j =0;j < node ;j++)...{
if(array[i][j] > array[i][k] + array[k][j])
array[i][j] = array[i][k] + array[k][j];
}
}
}
return array;
}
//测试程序
public static void main(String[] args)...{
node = 5;
init(node);
for(int i = 0;i < node;i++)...{
for(int j=0;j <node;j++)...{
System.out.print(array[i][j] + " ");
}
System.out.println(" ");
}
shortestpath();
System.out.println("");
System.out.println("");
for(int i = 0;i < node;i++)...{
for(int j=0;j <node;j++)...{
System.out.print(array[i][j] + " ");
}
System.out.println("");
}
}
}
public class ShortestPath ... {
static int node;//节点总数
static int[][] array;
//初始化图
static int[][] init(int node)...{
array = new int[node][node];
for(int i = 0; i< node;i++)
...{ for(int j = i;j <node; j++)...{
array[i][j] = (int) (Math.random() * node + 1);//防止相异的两点距离为0的情况出现
array[j][i] = array[i][j];
}
array[i][i] = 0;
}
return array;
}
//注意:k 的循环要在最外层
static int[][] shortestpath()...{
for(int k =0;k < node; k++)...{
for(int i = 0; i< node; i++)...{
for(int j =0;j < node ;j++)...{
if(array[i][j] > array[i][k] + array[k][j])
array[i][j] = array[i][k] + array[k][j];
}
}
}
return array;
}
//测试程序
public static void main(String[] args)...{
node = 5;
init(node);
for(int i = 0;i < node;i++)...{
for(int j=0;j <node;j++)...{
System.out.print(array[i][j] + " ");
}
System.out.println(" ");
}
shortestpath();
System.out.println("");
System.out.println("");
for(int i = 0;i < node;i++)...{
for(int j=0;j <node;j++)...{
System.out.print(array[i][j] + " ");
}
System.out.println("");
}
}
}