BFS 디버깅

BFS 거리 확정

BFS 최소 거리에서는 `dist[nxt] = dist[cur] + 1`이 방문 체크이자 거리 확정이다. 이 시점을 뒤로 미루면 같은 정점이 여러 번 큐에 들어가고, 조용한 오답의 시작점이 된다.

예제 그래프 상태 전이

0

시작 정점 0

그래프는 `0-1`, `0-2`, `1-3`이고 시작 큐는 `[0]`이다.

q=[0], head=0, dist[0]=0
1

0을 꺼내고 1, 2를 발견

이웃을 넣는 순간 `dist[1]`, `dist[2]`를 1로 기록한다.

q=[0,1,2], head=1, dist=[0,1,1,-1]
2

1을 꺼내고 3을 발견

`dist[3] = dist[1] + 1`이므로 정점 3의 최단 거리는 2가 된다.

q=[0,1,2,3], head=2, dist=[0,1,1,2]
오답 신호

방문 체크를 dequeue까지 미룸

같은 정점이 여러 부모를 통해 큐에 중복 삽입될 수 있다.

큐 추적

첫 5스텝만 출력

`head`, 큐 내용, `dist` 변화가 문장으로 설명되어야 한다.

종료

head가 q 길이에 도달

더 이상 처리할 발견 정점이 없으면 거리 배열이 최종 결과다.