1、Dijkstra算法
Dijkstra算法解决的是单源最短路径问题,即给定G(V,E)和起点s(起点又称为源点),求从起点s到达其它顶点的最短距离。(s为V0)
## 输入样例
6 8 0
0 1 1
0 3 4
0 4 4
1 3 2
2 5 1
3 2 2
3 4 3
4 5 3
## s为起点
def Dijkstra(s):
global d,vis,pre
## 起点到自己的距离为0
d[s]=0
## 循环n次
for i in range(n):
## u使d[u]最小
u=-1
MIN=float("inf")
## 找到未访问顶点中d[]最小的
for j in range(n):
if vis[j]==False and d[j]<MIN:
u=j
MIN=d[j]
## 找不到小于INF的d[u]说明,剩下的顶点与起点s不通
if u==-1:
return
## 标记u为已访问
vis[u]=True
for v in range(n):
## 如果v未访问,u能到达v,以