1. 程式人生 > >ecnu 1817 Shortest Path

ecnu 1817 Shortest Path

true als class test IT bsp span dijk pri

def dijkstra(N,lowdis,dis):
    vis=[]
    for i in range(0,N): #有N個節點編號為0~N-1
        lowdis.append(dis[0][i])
        vis.append(False)
    vis[0]=True
    for i in range(1,N):
        mind=float(inf)
        minn=-1 
        for j in range(0,N):
            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,N): if not vis[j]: if lowdis[j]>mind+dis[minn][j]: lowdis[j]
=mind+dis[minn][j] else: return -1 return lowdis[N-1] n,m=map(int,input().split()) lowdis=[] dis=[] line=[] for i in range(0,n): line.append(float(inf)) for i in range(0,n): dis.append(line[:]) dis[i][i]=0 for i in range(0,m): a,b,c=map(int,input().split())
if dis[a-1][b-1]>c: dis[a-1][b-1]=c print(dijkstra(n,lowdis,dis))

ecnu 1817 Shortest Path