문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

6111 : 다중 출발 BFS

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

6111 : 다중 출발 BFS

시간 1.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

정점 N개와 간선 M개인 무방향 그래프에서 여러 개의 시작 노드 번호 K개가 동시에 주어집니다.
모든 노드에 대해, 자신과 가장 가까운 시작 노드로부터의 최단 거리를 구하는 프로그램을 작성하십시오.

입력 설명

첫째 줄에 정점의 개수 N (1 ≤ N ≤ 1,000)과 간선의 개수 M (0 ≤ M ≤ 10,000)이 주어집니다.
둘째 줄에 시작 노드의 개수 K (1 ≤ K ≤ N)가 주어집니다.
셋째 줄에 K개의 시작 노드 번호가 공백으로 구분되어 주어집니다.
넷째 줄부터 M개의 줄에 간선 u v가 주어집니다.

출력 설명

1번 노드부터 N번 노드까지 순서대로, 가장 가까운 시작지점으로부터의 거리를 공백으로 구분하여 한 줄에 출력합니다. 시작지점 자체의 거리는 0이며, 시작지점들로부터 도달 불가능한 노드는 -1을 출력합니다.

입력 예시
COPY
복사되었습니다!

5 4
2
1 4
1 2
2 3
3 4
4 5

출력 예시
COPY
복사되었습니다!

0 1 1 0 1

도움

다중 소스(Multi-source) BFS 기법을 활용합니다. 탐색 초기에 모든 시작 정점을 일시에 큐에 밀어 넣고 동시에 탐색을 시작하면, 자연스럽게 각 노드는 가장 먼저 자신을 찾아온 소스로부터의 최소 거리가 결정됩니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘