class Dijkstra():
def __init__(self,graph,points):
self.graph=graph
self.points=points
self.Node=[False]*self.points
self.Distance=[float("inf")]*self.points
def Minpath(self,s):
self.Distance[s]=0
for i in range(self.points):
for point in self.graph:
self.Node[point[0]] = True
if self.Distance[point[1]] > point[2]:
self.Distance[point[1]] = min(self.Distance[point[1]], point[2] + self.Distance[point[0]])
return self.Distance
if __name__ == '__main__':
graph=[]
points=int(input("请输入图的点数:"))
avris = int(input("请输入图的边数:"))
start_point=int(input("请输入开始的起点:"))
for i in range(avris):
stides = list(map(int, input(("请输入第{}条边两点和权重:").format(i+1)).split(' ')))
graph.append(stides)
#graph= [[[0, 1, 1],[ 0, 2, 12]], [[1, 2, 9] ,[1, 3, 3]],[[ 2, 4, 5]],[[3, 2, 4], [3, 4, 13],[ 3, 5, 15]],[[ 4, 5, 4]]]
D=Dijkstra(graph,points)
print(D.Minpath(start_point))
python实现dijkstra算法
最新推荐文章于 2024-05-20 22:46:16 发布