삽입 시점 고정
BFS는 큐에 넣는 순간 방문 처리해야 같은 정점이 여러 번 들어가지 않는다.
같은 stack이나 queue를 써도 언제 넣고 언제 빼는지에 따라 중복 방문, 무한 루프, 잘못된 순서가 생긴다.
BFS는 큐에 넣는 순간 방문 처리해야 같은 정점이 여러 번 들어가지 않는다.
단조 스택은 새 값이 들어왔을 때 더 이상 답 후보가 아닌 원소를 제거한다.
무한 루프나 중복 삽입은 queue 크기가 비정상적으로 커지는 신호로 먼저 보인다.
visited[start] = true;
q.push(start);
while (!q.empty()) {
auto v = q.front(); q.pop();
for (auto next : graph[v]) if (!visited[next]) {
visited[next] = true; q.push(next);
}
}