graph = [
[-1, 2, 4, 3, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, 7, 4, -1, -1, -1, -1],
[-1, -1, -1, -1, 3, 2, 4, -1, -1, -1],
[-1, -1, -1, -1, 6, 2, 5, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, 3, 4, -1],
[-1, -1, -1, -1, -1, -1, -1, 6, 3, -1],
[-1, -1, -1, -1, -1, -1, -1, 3, 3, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, 3],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, 4],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
]
d = [float('inf') for i in range(len(graph))] #列表生成式
d[0] = 0 #让第一个元素为0 方便后面的比较
path = [0 for i in range(len(graph))] #列表生成式
for j in range(1, len(graph)):
for i in range(len(graph)):
if graph[i][j] != -1:
if d[j] > d[i] + graph[i][j]:
d[j] = d[i] + graph[i][j]
path[j] = i
print("各节点最短距离:", d)
print("从起点到终点的最短距离:", d[-1])
print("路径:", path)