페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5652
서브태스크

주유소 3초 1024MB

문제

KOI 국가는 N개의 마을로 이루어져 있다.
각 마을에는 1번 마을, 2번 마을, \cdots, N번 마을과 같이 번호가 붙어 있다.
그리고 도로가 N-1개 있는데, 각각의 도로는 서로 다른 두 마을을 잇고 있다.
각 도로에도 1번 도로, 2번 도로, ..., N-1번 도로와 같이 번호가 붙어 있다.
i번 도로는 x_i번 마을과 y_i번 마을을 직접 잇고 있다.
KOI 국가의 임의의 두 마을에 대해, 두 마을을 잇는 경로가 정확히 하나 존재한다.

 

x번 마을과 y번 마을을 잇는 경로는 x번 마을 - z_1번 마을 - z_2​번 마을 - \cdots​ - z_3​번 마을 - y번 마을과 같이
마을로 이루어진 수열 형태를 띤다.
이 수열이 다음 두 성질을 만족할 때 경로라고 부른다.

 

1. 경로를 이루는 인접한 두 마을 사이, 즉 x번 마을과 z_1번 마을 사이,
z_1번 마을과 z_2번 마을 사이, \cdots, z_t번 마을과 y번 마을 사이를 잇는 도로가 존재한다.

2. 경로에는 같은 마을이 두 번 등장하면 안 된다.
즉, 경로를 이루는 x번, z_1​, \cdots, z_t번, y번 마을은 모두 서로 다른 마을이어야 한다.

 

이 때 경로의 "길이"는, 경로를 이루는 도로의 수, 즉 t+1로 정의한다. 

 

마을들 중 몇 개의 마을을 골라 주유소를 설치하려고 한다.
KOI 국가의 법에 따라, 주유소는 다음 조건을 만족하도록 설치해야 한다.

  • 길이 k인 임의의 경로에, 주유소가 설치된 마을이 적어도 하나 존재해야 한다.

위 조건을 만족하도록 가장 적은 개수의 마을을 골라 주유소를 설치하려고 한다.
이 때 설치해야 하는 주유소의 개수의 최솟값을 구하여라.


입력

첫 번째 줄에 마을의 개수 N과 조건에 주어진 값 k가 공백을 사이에 두고 주어진다.

두 번째 줄부터 N-1개의 줄에 걸쳐,
각 도로가 잇고 있는 두 마을의 번호 x_iy_i가 공백을 사이에 두고 주어진다.

[제한]

2 \le N \le 200\,000

1 \le k \le N-1

1 \le x_i \le N, 1 \le y_i \le N, x_i \neq y_i

임의의 두 마을에 대해, 두 마을을 잇는 경로가 정확히 하나 존재한다.

길이 k인 경로는 적어도 하나 존재한다.

주어지는 모든 수는 정수이다.


출력

첫 번째 줄에, 설치해야 하는 주유소의 개수의 최솟값을 출력하라.


부분문제

번호 점수 조건
#19점

i \, (i \le i \le N-1)번 도로는 i번 마을과 i+1번 마을을 잇고 있다.

#210점

k=1.

#311점

i \, (1 \le i \le N-1)번 도로는 i+1번 마을과 \lfloor (i+1)/2 \rfloor 번 마을을 잇고 있다. (\lfloor x \rfloorx이하인 가장 큰 정수를 의미한다.)

#412점

N\le15.

#515점

N\le300.

#617점

N\le3000.

#726점

추가 제약 조건 없음.


예제1

입력
62

12
13
24
25
46
출력
1

2번 마을에 주유소를 설치하면 문제의 조건을 만족한다. 필요한 주유소의 개수는 1개이므로 1을 출력한다.


예제2

입력
72

12
13
24
25
46
67
출력
2

2번 마을에만 주유소를 설치하면 문제의 조건을 만족하지 않는다. 4번 마을 - 6번 마을 - 7번 마을로 이루어진 경로에 주유소가 지나지 않기 때문이다. 추가로 6번 마을에 주유소를 설치하면 문제의 조건을 만족한다. 이 때 필요한 주유소의 개수는 2개이며, 주유소 1개로는 문제의 조건을 만족할 수 없기 때문에 2를 출력한다.


출처

KOI 1차 2023 중3/고2

역링크