개의 지하철 역
시간 제한1.5초메모리 제한1024 MB
가중치가 있는 트리에서 노드를 K개 이하로 이어 만든 경로를 고르고, 모든 노드에서 그 경로까지의 최대 거리를 최소화하는 문제입니다.
문제
서울시장 한별은 혼잡한 도로의 교통 체증을 줄이기 위해 지하철을 건설하려 한다. 예산 문제로 역은 최대 개까지만 지을 수 있고, 역들은 도로 하나의 경로로 모두 이어져야 한다.
서울의 도로망은 개의 노드와 개의 양방향 간선으로 이루어진 연결 그래프로 나타낸다. 노드는 건물, 간선은 도로이다. 한별은 를 만족하는 개 노드의 단순 경로를 하나 골라, 그 경로에 있는 모든 노드에 역을 세워야 한다.
한별은 모든 건물에서 가장 가까운 역까지의 거리 중 최댓값을 최소로 만들고 싶어 한다. 이 값이 최소가 되도록 역의 위치를 정하는 프로그램을 작성하라.
입력
첫째 줄에 두 정수 과 가 공백으로 구분되어 주어진다. 은 도시의 노드 수이고, 는 한별이 지을 수 있는 지하철 역의 최대 개수이다. ()
이후 개의 줄에 세 정수 , , 가 공백으로 구분되어 주어진다. 이는 번째 도로가 노드 와 를 잇고, 길이가 킬로미터라는 뜻이다. (; ; 이면 )
출력
모든 건물에서 가장 가까운 역까지의 거리 최댓값을 최소로 만들었을 때 그 값을 킬로미터 단위로 출력한다.
힌트
(서강대학교 학생용) 이 문제는 일반 프로그래밍 대회 형식에 맞게 변형한 문제이다. 시험에서의 원래 배점은 다음과 같았다.
- 부분문제 1: 55점
- 부분문제 2: 40점
- 부분문제 3: 3점
- 부분문제 4: 2점