https://school.programmers.co.kr/learn/courses/30/lessons/132266
from collections import defaultdict, deque
def solution(n, roads, sources, destination):
answer = []
graph = defaultdict(list)
for u, v in roads:
graph[u].append(v)
graph[v].append(u)
q = deque()
q.append(destination)
distance = defaultdict(int)
visited = defaultdict(bool)
visited[destination] = True
while q:
node = q.popleft()
for u in graph[node]:
if not visited[u]:
visited[u] = True
distance[u] = distance[node] + 1
q.append(u)
for source in sources:
if source not in distance:
answer.append(-1)
else:
answer.append(distance[source])
return answer
BFS를 100,000
번 실행 => 시간초과
BFS를 destination
에서 한 번 실행 => 통과