题解 | 【模板】单源最短路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不行,可能是点不是连续的吧