最短路径 (Dijkstra算法)
2013-11-24 20:54
225 查看
public void shortestPath(int i) {
int n = this.vertexCount();
int vset[] = new int
;//标记顶点
int path[] = new int
;//i到j的 路径
int dist[] = new int
;//i到j 点的总长度
vset[i] = 1;
for(int j = 0;j < n;j++) {//初始化
dist[j] = this.getWeight(i, j);
path[j] = i;
}
for(int j = 0;j < n;j++) {
int u = -1;
int MAX = MAX_INT;
for (int k = 0;k < n;k++) //找最小
if (vset[k] == 0 && dist[k] < MAX) {
u = k;
MAX = dist[k];
}
if (u == -1) break;//没有最小的
vset[u] = 1;
for (int k = 0;k < n;k++) //用找到的最小进行调整
if(vset[k] == 0 && dist[u] + this.getWeight(u, k) < dist[k]){
dist[k] = dist[u] + this.getWeight(u, k);
path[k] = u;
}
}
for (int j = 0;j < n;j++) {
if(j == i) continue;
String str = "";
int u = j;
str = "->v" + j;
while (path[u] != i) {
str = "->v" + path[u] + str;
u = path[u];
}
str = "v" + i + str;
System.out.print(str + " ");
if(dist[j] == MAX_INT)
System.out.println("无最短路径");
else
System.out.println(dist[j]);
}
}
int n = this.vertexCount();
int vset[] = new int
;//标记顶点
int path[] = new int
;//i到j的 路径
int dist[] = new int
;//i到j 点的总长度
vset[i] = 1;
for(int j = 0;j < n;j++) {//初始化
dist[j] = this.getWeight(i, j);
path[j] = i;
}
for(int j = 0;j < n;j++) {
int u = -1;
int MAX = MAX_INT;
for (int k = 0;k < n;k++) //找最小
if (vset[k] == 0 && dist[k] < MAX) {
u = k;
MAX = dist[k];
}
if (u == -1) break;//没有最小的
vset[u] = 1;
for (int k = 0;k < n;k++) //用找到的最小进行调整
if(vset[k] == 0 && dist[u] + this.getWeight(u, k) < dist[k]){
dist[k] = dist[u] + this.getWeight(u, k);
path[k] = u;
}
}
for (int j = 0;j < n;j++) {
if(j == i) continue;
String str = "";
int u = j;
str = "->v" + j;
while (path[u] != i) {
str = "->v" + path[u] + str;
u = path[u];
}
str = "v" + i + str;
System.out.print(str + " ");
if(dist[j] == MAX_INT)
System.out.println("无最短路径");
else
System.out.println(dist[j]);
}
}
相关文章推荐
- Dijkstra和floyd——求单源点最短路径
- HDU 2544
- UVa Problem 10039 Railroads (铁路)
- hdu1874(dijkstra)
- hdu 3790 最短路径问题 (dijkstra算法+memset()用法)
- hdu 1874 畅通工程续 (dijkstra算法)
- poj 2253 Frogger(dijkstra)
- 畅通工程续
- 一个人的旅行
- Zipper
- 图算法 Dijkstra算法 赋权图的单源最短路径
- 微软过桥问题Dijkstra/倒水问题
- HDU 1596 find the safest road
- HDU 1874 畅通工程续
- Routing
- 最短路问题
- Dijkstra算法求单源最短路径
- dijkstra算法
- HDU 2544 最短路 最短路入门
- HDU 2066 一个人的旅行