import heapq def dijkstra(s,L): hq=[(0,s,0)] heapq.heapify(hq) # リストを優先度付きキューに変換 cost=[10**12]*L # 行ったことのないところはinf cost[s]=0 # 開始地点は0 while hq: c,v,pre=heapq.heappop(hq) if c>cost[v]: # コストが現在のコストよりも高ければスルー v:now u:nex continue for d, u in E[v]: tmp=d+cost[v] if tmp