만드는 중입니다

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

KK개의 지하철 역

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

요약
가중치가 있는 트리에서 노드를 K개 이하로 이어 만든 경로를 고르고, 모든 노드에서 그 경로까지의 최대 거리를 최소화하는 문제입니다.
난이도

어려움10점 중 8점

유형
트리, 이분 탐색, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

서울시장 한별은 혼잡한 도로의 교통 체증을 줄이기 위해 지하철을 건설하려 한다. 예산 문제로 역은 최대 KK개까지만 지을 수 있고, 역들은 도로 하나의 경로로 모두 이어져야 한다.

서울의 도로망은 NN개의 노드와 N−1N-1개의 양방향 간선으로 이루어진 연결 그래프로 나타낸다. 노드는 건물, 간선은 도로이다. 한별은 1≤X≤K1 \le X \le K를 만족하는 XX개 노드의 단순 경로를 하나 골라, 그 경로에 있는 모든 노드에 역을 세워야 한다.

한별은 모든 건물에서 가장 가까운 역까지의 거리 중 최댓값을 최소로 만들고 싶어 한다. 이 값이 최소가 되도록 역의 위치를 정하는 프로그램을 작성하라.

입력

첫째 줄에 두 정수 NN과 KK가 공백으로 구분되어 주어진다. NN은 도시의 노드 수이고, KK는 한별이 지을 수 있는 지하철 역의 최대 개수이다. (1≤K≤N≤300 0001 \le K \le N \le 300\,000)

이후 N−1N-1개의 줄에 세 정수 uiu_i, viv_i, lil_i가 공백으로 구분되어 주어진다. 이는 ii번째 도로가 노드 uiu_i와 viv_i를 잇고, 길이가 lil_i킬로미터라는 뜻이다. (1≤ui,vi≤N1 \le u_i, v_i \le N; 1≤li≤10121 \le l_i \le 10^{12}; i≠ji \ne j이면 {ui,vi}≠{uj,vj}\{u_i,v_i\} \ne \{u_j,v_j\})

출력

모든 건물에서 가장 가까운 역까지의 거리 최댓값을 최소로 만들었을 때 그 값을 킬로미터 단위로 출력한다.

힌트

(서강대학교 학생용) 이 문제는 일반 프로그래밍 대회 형식에 맞게 변형한 문제이다. 시험에서의 원래 배점은 다음과 같았다.

  • 부분문제 1: 55점
  • 부분문제 2: 40점
  • 부분문제 3: 3점
  • 부분문제 4: 2점

예제2

  1. 예제 1

    입력
    9 3
    1 2 5
    2 3 8
    3 4 6
    3 5 9
    5 6 8
    5 9 11
    6 7 1
    6 8 12
    
    예상 출력
    13
    
  2. 예제 2

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