Build an adjacency list, run BFS, multiply levels by .
function bfsShortestReach(n, edges, s):
adj = [[] for _ in range(n + 1)]
for u, v in edges:
adj[u].append(v)
adj[v].append(u)
dist = [-1] * (n + 1)
dist[s] = 0
queue = [s]
while queue is not empty:
nextLevel = []
for node in queue:
for neighbor in adj[node]:
if dist[neighbor] == -1:
dist[neighbor] = dist[node] + 6
nextLevel.append(neighbor)
queue = nextLevel
result = []
for i in range(1, n + 1):
if i != s:
result.append(dist[i])
return result
time, space.