아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

디젤을 이겨라

시간 제한1초메모리 제한1024 MB

요약
화성 동굴 그래프에서 가장 가깝고 그다음으로 안전한 방을 차례로 연결하며 이동한 통로 횟수의 합을 구한다.
난이도

어려움10점 중 8점

유형
그래프, BFS, 그리디, 구현
정답자
아직 제출이 없습니다

문제

화성의 동굴 계통을 탐사하는 일은 지구에서 미리 계획해 둔, 간단한 절차다. 각 동굴 계통에는 서로 연결되지 않은 여러 동굴 방이 있다. 동굴 방들은 지표에서 접근할 수 없으므로, 방 사이에 통로를 굴착할 수 있는 굴착기를 지급받았다.

토양은 균일하지 않고 굴착기를 돌리는 데는 디젤이 엄청나게 많이 든다. 디젤을 아끼려면, 모든 동굴에 지표에서 통로를 거쳐 접근할 수 있도록 최소 개수의 통로를 굴착해야 한다. 동시에, 지표에서 특정 동굴까지 가는 데 지나야 하는 통로의 수가 최소가 되도록 계통이 연결되어야 한다.

동굴 계통 전체를 스캔했고, 이제 각 동굴 방의 위험도를 알고 있다. 스캔 결과에는 어떤 동굴 방 쌍, 또는 어떤 동굴 방과 지표 사이의 토양을 파서 통로를 만들 수 있는지도 나온다. 동굴 방의 거리를, 가능한 모든 통로를 굴착했다고 할 때 지표에서 그 방까지 가는 데 지나야 하는 통로 수의 최솟값이라고 하자.

안전상의 이유로, 굴착 절차는 가까운(거리가 작은) 동굴 방을 더 먼 동굴 방보다 먼저 접근 가능하게 만들어야 한다고 규정한다. 이 규칙으로 다음에 접근 가능하게 만들 방이 유일하게 정해지지 않으면, 후보 중에서 가장 안전한(위험도가 낮은) 방을 고른다. 그래도 굴착해야 할 통로가 유일하게 정해지지 않으면, 이미 접근 가능한 출발 지점 중에서 가장 안전한 것을 고른다.

주어진 순서대로 방을 발견하다 보면 이미 굴착한 통로를 여러 번 지나야 한다. 굴착기를 옮기는 데 쓰는 기계도 디젤을 마시지만, 굴착기보다는 훨씬 적게 마신다. 이 작업을 하는 데 필요한 디젤의 양, 즉 0에서 시작해 모든 통로를 굴착할 때까지 지나야 하는 통로의 수가 궁금하다.

입력

첫 번째 줄에는 두 정수 N과 M(1 ≤ N ≤ 2 · 105, 0 ≤ M ≤ 2 · 105)이 주어진다. 각각 동굴 방의 수(지표 포함)와 가능한 동굴 통로의 수다. 지표는 0으로 표시하고, 동굴 방은 1부터 N − 1까지의 정수로 표시하며 위험도가 커지는 순서로 번호가 매겨져 있다. 다음 M개의 줄에는 각각 두 정수가 주어지며, 이는 서로 연결하는 통로를 만들 수 있을 만큼 토양이 부드러운 두 동굴 방, 또는 동굴 방과 지표를 나타낸다.

출력

주어진 절차에 따라 동굴 계통 전체를 접근 가능하게 만드는 데 필요한 총 통로 통과 횟수를 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    5 5
    0 1
    1 2
    2 3
    3 4
    4 0
    
    예상 출력
    10
    
  2. 예제 2

    입력
    5 4
    0 1
    1 2
    2 3
    3 4
    
    예상 출력
    4
    
  3. 예제 3

    입력
    5 6
    0 1
    0 2
    0 3
    0 4
    1 4
    2 3
    
    예상 출력
    7