题解 | 【模板】单源最短路1
import sys
import heapq
n, m = map(int, input().split())
edg = [[] for i in range(5100)]
vis = [0 for i in range(5100)]
for i in range(m):
u, v = map(int, input().split())
edg[u].append(v)
edg[v].append(u)
q = []
heapq.heappush(q, (0, 1, 1))
while q:
t = heapq.heappop(q)
cnt, u, v = t[0], t[1], t[2]
if vis[v]: continue
vis[v] = cnt
points = edg[v]
for poi in points:
if vis[poi] : continue
heapq.heappush(q, (cnt + 1, v, poi))
if vis[n] == 0:
vis[n] = -1
print(vis[n])
不知道为什么要开很大的数组edg = [[] for i in range(5100)],我用n+100不行,可能是点不是连续的吧
