족보

시간 제한2초메모리 제한64 MB

요약
각 노드가 자신의 자식을 가리키는 트리에서 모든 노드의 부모 수가 d 이하가 되도록 삽입해야 하는 조상 노드의 최소 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

외계인 피터는 자신의 족보를 정리하려고 한다. 피터는 몇 주 동안 열심히 작업하여 족보의 초안(베타 버전)을 완성했다.

그런데 족보를 살펴보니 일부 선조가 지나치게 많은 부모를 가지고 있었다. (외계인은 부모를 최대 d명까지 가질 수 있다.) 그래서 피터는 일부 부모-자식 관계가 사실은 더 먼 선조-자손 관계일 것이라고 생각했다.

족보를 만족스러운 형태로 바꾸기 위해 최소 몇 명의 선조를 추가로 넣어야 하는지 구하는 프로그램을 작성하시오.

족보가 만족스러운 형태라는 것은, 모든 외계인의 부모 수가 d명을 넘지 않고 각 외계인이 족보에 정확히 한 번만 등장하는 상태를 말한다.

예를 들어 d가 2이고 피터가 만든 족보의 초안이 아래와 같다면,

아래와 같이 선조 두 명을 추가하면 만족스러운 형태가 된다.

입력

첫째 줄에 두 정수 n과 d가 주어진다. (2 ≤ n ≤ 100,000, 2 ≤ d ≤ n)

둘째 줄에는 n개의 정수가 공백으로 구분되어 주어진다. i번째 정수는 i번 외계인이 자식으로 지목한 외계인의 번호이다. 즉 i번 외계인은 그 외계인의 부모가 된다.

피터의 족보에 등장하는 선조는 1번부터 n번까지 번호로 나타내며, 피터 자신의 번호는 0번이다.

출력

족보를 만족스러운 형태로 바꾸기 위해 추가해야 하는 선조의 최소 인원수를 출력한다.

예제6

  1. 예제 1

    입력
    6 2
    5 5 0 5 0 5
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2 2
    2 0
    
    예상 출력
    0
    
  3. 예제 3

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

    입력
    7 3
    0 0 0 0 0 0 0
    
    예상 출력
    2
    
  5. 예제 5

    입력
    8 2
    5 5 5 5 8 8 8 0
    
    예상 출력
    3
    
  6. 예제 6

    입력
    10 4
    0 0 0 0 0 0 0 0 0 0
    
    예상 출력
    2