공원
시간 제한3초메모리 제한512 MB
가중치가 있는 트리에서 정확히 k개의 정점을 공원으로 골라 모든 정점에서 가장 가까운 공원까지의 거리 중 최댓값을 최소로 만들고, 그 값과 한 가지 최적 선택을 출력한다.
문제
마을 회관은 경관을 꾸미기 위해 새 공원을 짓기로 했다. 공원이 보기 좋을 뿐 아니라 쓸모 있으려면, 다른 동네의 아이들이 적어도 하나의 공원을 가까이에서 이용할 수 있도록 공원을 어느 동네에 지을지 신중히 골라야 한다.
마을은 개의 동네와 길이 일정한 개의 도로로 이루어져 있다. 각 동네에서 다른 동네로 가는 경로는 유일하다. 즉, 동네와 도로는 트리를 이룬다. 서로 다른 동네에 정확히 개의 공원을 지어, 나머지 동네가 가장 가까운 공원을 최대한 가까이 두도록 해야 한다. 더 정확히 말하면, 회관은 동네에서 가장 가까운 공원까지의 거리 중 최댓값을 최소화하려 한다.
마을 회관을 도와 어느 동네에 공원을 지어야 하는지 정하고, 동네에서 가장 가까운 공원까지의 거리 중 최댓값을 구하라.
입력
첫째 줄에 두 양의 정수 과 가 주어진다(). 각각 동네의 수와 공원의 수이다.
다음 개 줄의 번째 줄에는 양의 정수 , , 가 주어진다(, ). 이는 번 동네와 번 동네가 길이 인 도로로 연결되어 있음을 뜻한다.
출력
첫째 줄에 문제에서 정의한 최댓값의 최솟값을 출력한다.
둘째 줄에 공원을 지을 동네의 번호 개를 공백으로 구분해 출력한다. 답이 여러 개라면 아무거나 출력한다.
힌트
세 번째 예제에 대한 설명: 공원을 3번과 4번 동네에만 지어도 최댓값은 달라지지 않지만, 시는 정확히 개의 공원을 지으려 하므로 두 개를 더 지어야 한다.