迪杰斯特拉(python)

mac2025-06-22  10

n,m=map(int, input('node number and edge number:').split()) INF=0x3f3f3f #print(INF) e=[] for i in range(n): e.append([]) for j in range(n): e[i].append(INF) if i==j: e[i][j]=0 for i in range(m): a,b,w=map(int,input('node a and node b,edge of a&b:').split()) e[a][b]=w e[b][a]=w dis=[] book=[] k=0 for i in range(n): dis.append(e[0][i]) book.append(0) dis[0]=0 book[0]=1 for i in range(n): mmin=INF for j in range(1,n): if book[j]==0 and dis[j]<mmin: mmin=dis[j] k=j book[k]=1 #print("k is ",k) for j in range(1,n): #print('j is ',j,dis[j],dis[k],e[k][j]) if book[j]==0 and dis[j]>(dis[k]+e[k][j]): dis[j]=dis[k]+e[k][j] for i in range(n): print(dis[i])

 

最新回复(0)