python實現最短路徑問題

來源:互聯網
上載者:User

標籤:not   n+1   ret   init   input   return   put   nbsp   inpu   

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 lowdisn,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]=wlowdis=d.floyd()if lowdis[1][n]!=float(‘inf‘):    print(lowdis[1][n])else:    print("-1")

 

python實現最短路徑問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.