만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리 정리하기

면접 대비

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

요약
뿌리가 1번인 트리에서 레벨마다 K개 이하의 노드만 남도록 부분트리를 잘라낼 때, 남길 수 있는 최대 노드 수를 구합니다.
난이도

보통10점 중 5점

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

문제

동빈이가 사는 나라의 나무들은 트리 모양을 하고 있다.

다가오는 크리스마스를 기념해서, 동빈이는 나무를 다듬어 집에 트리를 장식하기로 했다.

동빈이의 트리는 N개의 노드가 N-1개의 간선으로 연결되어 있다. 각 노드에는 1부터 N까지 번호가 붙어 있고, 루트 노드의 번호는 1이다.

트리에서 루트 노드의 레벨은 0이고, 아래로 내려갈수록 레벨이 1씩 증가한다. 동빈이는 모든 노드에 장식을 달고 싶었지만, 트리의 두께가 K를 넘으면 집에 들어가지 않는다.

이때 트리의 두께는 같은 레벨에 있는 노드 개수의 최댓값이다.

결국 일부 노드를 제거해 트리의 두께가 K 이하가 되도록 만들어야 한다. 부모 노드를 제거하면 모든 자식 노드도 함께 제거된다.

되도록 많은 장식을 달고 싶은 동빈이는 최대한 많은 노드를 남기려 한다. 여러분이 동빈이를 도와주자.

입력

첫째 줄에 정점의 개수 N과 레벨마다 남길 수 있는 노드의 개수 K가 주어진다. (1 ≤ N ≤ 10,000, 1 ≤ K ≤ N)

다음 N-1개의 줄에 걸쳐, 두 정수 a**i, b**i가 주어진다. 이는 a**i번 노드와 b**i번 노드가 간선으로 연결되어 있다는 의미이다. (1 ≤ a**i, b**i ≤ N, a**i ≠ b**i)

출력

최대한 많은 노드를 남기고 트리를 정리했을 때 남은 노드의 개수를 출력하시오.

예제2

  1. 예제 1

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

    입력
    10 2
    2 8
    5 1
    10 5
    3 5
    6 3
    8 7
    2 5
    3 4
    9 6
    
    예상 출력
    8