采用Dijkstra算法求带权有向图的最短路径的代码
时间: 2023-11-12 14:19:39 浏览: 83
matlib.zip_dijkstra_图的最短路径_有向图_有向图 最短路径
5星 · 资源好评率100%
好的,下面是Dijkstra算法求带权有向图的最短路径的Python代码:
``` python
import heapq
def dijkstra(graph, src):
# 初始化dist数组
dist = [float('inf') for _ in range(len(graph))]
dist[src] = 0
# 初始化最小堆
heap = [(0, src)]
# 初始化visited数组
visited = [False for _ in range(len(graph))]
while heap:
# 取出dist值最小的顶点u
d, u = heapq.heappop(heap)
# 如果u已经被访问过了,跳过本次循环
if visited[u]:
continue
# 将u标记为已访问
visited[u] = True
# 更新u的所有邻接顶点的dist值
for v, w in graph[u]:
if not visited[v] and dist[v] > dist[u] + w:
dist[v] = dist[u] + w
heapq.heappush(heap, (dist[v], v))
return dist
```
其中,graph是一个邻接表,每个元素是一个列表,表示该顶点的所有邻接顶点以及边的权值。src表示源点的编号。
希望这个代码能够对你有所帮助!
阅读全文