지역 (Regions)
시간 제한1초메모리 제한1024 MB
가중치가 있는 트리를 M개의 연결된 영역으로 나눌 때 가장 큰 영역 지름을 최소로 만들고, 그 최솟값을 출력한다.
문제
JOI 나라에는 개의 도시가 있고, 부터 까지 번호가 붙어 있다. 이 도시들은 양방향으로 통행 가능한 도로로 트리 모양으로 연결되어 있다. 즉, 임의의 두 도시는 도로를 따라 서로 오갈 수 있고, 그 경로는 하나뿐이다. 이때 도로는 개이다.
도시를 개의 지역으로 나누려고 한다. 모든 지역은 하나 이상의 도시를 포함해야 하고, 모든 도시는 정확히 하나의 지역에 포함되어야 한다. 또한 같은 지역에 포함된 임의의 두 도시는 그 지역에 포함되지 않은 도시를 지나지 않고 도로를 따라 서로 오갈 수 있어야 한다.
각 지역의 지름의 최댓값 가 가능한 한 작아지도록 지역을 나누려고 한다. 어떤 지역의 지름이란, 그 지역에 포함된 두 도시 사이의 거리의 최댓값이다. 두 도시 사이의 거리란, 두 도시를 잇는 경로에 포함된 도로 길이의 합이다. 지역에 도시가 하나만 포함되면 그 지역의 지름은 으로 한다.
도로의 정보와 지역의 수가 주어지면, 의 최솟값을 계산하는 프로그램을 작성하시오.
입력
표준 입력에서 다음 입력을 읽는다.
- 첫째 줄에는 정수 이 공백을 구분으로 쓰여 있다.
- 이어지는 개의 줄에는 한 줄에 하나의 도로에 대한 정보가 쓰여 있다. 이 줄들 중 번째 줄은 도로 에 대한 정보이며, 정수 가 공백을 구분으로 쓰여 있다.
출력
표준 출력에 의 최솟값을 나타내는 정수 하나를 출력하시오.
제한
- (도시의 수)
- (지역의 수)
- (도로 가 잇는 두 도시)
- (도로 의 길이)