<pre name="code" class="java">/*
* 设置一个U集合,包括最小路径长度和上一个结点
* V-U集合表示还没有进行调整
* 把V-U集合逐渐增加U中。并调整最小路径
* */
public class Dijkstra {
private static int MAX = 10000;
public static void dijkstra(GraphMatrix grap, Path dist[]){
// 初始化V0
init(grap,dist);
int n = dist.length;
int minw = MAX;
int mv = 0;
for(int i=1;i<n;i++){
int j;
//找出和V0距离近期的顶点mv
for(j=1;j<n;j++){
if(grap.arcs[j][j]==0 && dist[j].length<MAX){
mv=j;
minw = dist[j].length;
}
}
if(mv == 0) break;
grap.arcs[mv][mv]=1; //把顶点mv增加U中
//调整V-U中已知的最短路径
for(j=1;j<n;j++){
if(grap.arcs[j][j]==0 && dist[j].length > dist[mv].length + grap.arcs[mv][j]){
dist[j].length = dist[mv].length + grap.arcs[mv][j];
dist[j].pre = mv;
}
}
}
}
转载于:https://www.cnblogs.com/lxjshuju/p/7102439.html