만드는 중입니다

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

정기 모임 2

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

요약
가중치가 있는 트리에서 정점 1부터 i까지만 고려할 때, 센터 X개를 골라 각 정점과 가장 가까운 센터 사이 거리의 최댓값을 최소로 만든 값을 X=1부터 K까지 더한 결과를 i마다 구합니다.
난이도

어려움10점 중 9점

유형
트리, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리가 주어진다. 정점에는 1번부터 NN번까지 번호가 붙어 있다. ii번째 간선은 AiA_i번 정점과 BiB_i번 정점을 잇고, 가중치는 CiC_i이다. (1≤i<N)(1 \leq i < N)

두 정점 사이의 거리는 두 정점을 잇는 최단 경로에 있는 간선 가중치의 최댓값이다. 같은 정점 사이의 거리는 0이다.

트리에 사는 사람들이 NN번의 모임을 연다. ii번째 모임에는 1번부터 ii번까지의 정점에 사는 사람들이 참석한다. 올해는 코로나바이러스 상황을 고려해, 각 모임을 XX곳에서 직접 모인 뒤 온라인으로 이어 간다. 각 모임은 트리의 서로 다른 XX개의 정점 v1,⋯ ,vXv_1, \cdots, v_X에서 열린다. 모임마다 정점을 독립적으로 고른다. 정점이 정해지면 각 사람은 v1,⋯ ,vXv_1, \cdots, v_X 중 이동 거리가 가장 짧은 정점으로 이동한다.

XX의 값은 1부터 KK까지 중 하나이다. 각 모임에 대해, XX를 1부터 KK까지 바꿔 가며 사람들이 이동하는 거리의 최댓값의 최솟값을 구하고, 그 값들을 모두 더한 합을 구한다. 최솟값은 정점을 고르는 방법에 대해 취한다.

입력

첫 줄에 정점 개수 NN과 정수 KK가 공백으로 구분되어 주어진다. (1≤K≤N≤300 000)(1 \leq K \leq N \leq 300\,000)

둘째 줄부터 N−1N-1개의 줄에 간선 정보가 주어진다. i+1i+1번째 줄에는 정수 AiA_i, BiB_i, CiC_i가 공백으로 구분되어 주어진다. 이는 AiA_i번 정점과 BiB_i번 정점을 가중치 CiC_i인 간선으로 잇는다는 뜻이다. (1≤i<N)(1 \leq i < N) (1≤Ai,Bi,Ci≤N)(1 \leq A_i, B_i, C_i \leq N)

출력

NN개의 줄에 걸쳐 답을 차례대로 출력한다. ii번째 줄에는 ii번째 모임의 답을 출력한다. (1≤i≤N)(1 \leq i \leq N)

예제2

  1. 예제 1

    입력
    10 4
    5 1 2
    1 6 4
    6 2 1
    2 8 9
    8 3 5
    3 4 8
    4 10 9
    10 9 8
    9 7 7
    
    예상 출력
    0
    4
    13
    21
    23
    23
    30
    31
    33
    34
    
  2. 예제 2

    입력
    8 3
    7 3 4
    4 5 2
    3 6 1
    6 8 6
    8 5 1
    2 5 8
    1 5 2
    
    예상 출력
    0
    8
    14
    16
    16
    16
    18
    18