python实现最短路径问题
Posted taming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实现最短路径问题相关的知识,希望对你有一定的参考价值。
class shortestpath(): def __init__(self,x): self.n=x self.dis=[[float(‘inf‘) for i in range(0,x+1)] for j in range(0,x+1)] for i in range(0,x+1): self.dis[i][i]=0 def dijkstra(self,s): lowdis=[float(‘inf‘)]*(self.n+1) vis=[False]*(self.n+1) vis[s]=True for i in range(0,self.n+1): lowdis[i]=self.dis[s][i] for i in range(1,self.n): mind=float(‘inf‘) minn=-1 for j in range(0,self.n+1): if not vis[j]: if lowdis[j]<mind: mind=lowdis[j] minn=j if mind<float(‘inf‘): vis[minn]=True for j in range(0,self.n+1): if not vis[j]: if mind+self.dis[minn][j]<lowdis[j]: lowdis[j]=mind+self.dis[minn][j] else: return lowdis return lowdis def floyd(self): lowdis=self.dis[:] for u in range(0,self.n+1): for i in range(0,self.n+1): for j in range(0,self.n+1): lowdis[i][j]=min(lowdis[i][u]+lowdis[u][j],lowdis[i][j]) return lowdis n,m=map(int,input().split()) d=shortestpath(n) for i in range(0,m): u,v,w=map(int,input().split()) if d.dis[u][v]>w: d.dis[u][v]=w lowdis=d.floyd() if lowdis[1][n]!=float(‘inf‘): print(lowdis[1][n]) else: print("-1")
以上是关于python实现最短路径问题的主要内容,如果未能解决你的问题,请参考以下文章