//初始化,第一个顶点求出 shortPath[start] = 0; visited[start] = 1;
for(int count = 1;count <= n - 1;count++) //要加入n-1个顶点 {
int k = -1; //选出一个距离初始顶点start最近的未标记顶点
int dmin = Integer.MAX_VALUE; for(int i = 0;i < n;i++)
{ if(visited[i] == 0 && weight[start][i] < dmin) { dmin = weight[start][i]; k = i;
}
} // System.out.println("k="+k);
//将新选出的顶点标记为已求出最短路径,且到start的最短路径就是dmin
shortPath[k] = dmin; visited[k] = 1;
//以k为中间点,修正从start到未访问各点的距离 for(int i = 0;i < n;i++){
if(visited[i] == 0 && weight[start][k] + weight[k][i] < weight[start][i]){
weight[start][i] = weight[start][k] + weight[k][i]; path[i]=path[k]+"-->"+i;} } }
for(int i=0;i<n;i++)