原题链接:最短路径(shopth)
解题思路:
注意事项:
参考代码:
n = int(input())
v0 = int(input())-1
matrix = []
M = float("inf")
for i in range(n):
matrix.append(list(input().split()))
for i in range(n):
for j in range(n):
if matrix[i][j] == "-":
matrix[i][j] = M
else:
matrix[i][j] = int(matrix[i][j])
def dijkstra(matrix,v0):
used_node = [False] * n
distance = [M] * n
distance[v0] = 0
while used_node.count(False):
min_value = M
min_value_index = -1
for i in range(n):
if not used_node[i] and distance[i] < min_value:
min_value = distance[i]
min_value_index = i
if min_value_index == -1:
break
used_node[min_value_index] = True
for i in range(n):
distance[i] = min(distance[i],distance[min_value_index]+matrix[min_value_index][i])
return distance
distance = dijkstra(matrix,v0)
for i in range(0,n):
if i == v0:
continue
print("("+str(v0+1)+" -> "+str(i+1)+") = "+str(distance[i]))0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复