만드는 중입니다

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

경로

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

요약
트리에서 각 정점을 루트로 할 때, 루트에서 K개의 정점까지 가는 경로들이 덮는 간선 가중치 합의 최댓값을 구합니다.
난이도

어려움10점 중 8점

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

문제

고양이 오렌지가 정점 번호가 1부터 NN까지 매겨진 트리(무방향 연결 그래프이며 사이클이 없는 그래프)를 발견했다. 간선 ii(1≤i<N1 \le i < N)는 정점 xix_i와 yiy_i를 잇고, 간선마다 특별한 고양이 간식이 cic_i개 있다.

오렌지는 정확히 KK개의 정점을 고른다. 루트에서 출발해 고른 각 정점까지 경로를 따라 걸으면서 지나는 간식을 모두 먹는다. 같은 간선의 간식은 한 번만 먹을 수 있다. ii를 1부터 NN까지 바꿔 가며, 루트가 정점 ii일 때 오렌지가 먹을 수 있는 간식의 최대 개수를 구한다.

입력

첫 줄에 정수 NN과 KK가 주어진다. 이어지는 N−1N-1개의 줄에는 간선을 나타내는 정수 xix_i, yiy_i, cic_i가 각각 주어진다.

출력

NN개의 줄을 출력한다. ii번째 줄에는 루트가 정점 ii일 때의 답을 출력한다.

제한

1≤K≤N≤1000001 \le K \le N \le 100000

1≤i<N1 \le i < N인 모든 ii에 대해 0≤ci≤10000000000 \le c_i \le 1000000000

힌트

루트가 정점 1이면 오렌지는 정점 4, 6, 9를 고를 수 있다. 루트에서 가는 경로는 1−2−3−41-2-3-4, 1−2−61-2-6, 1−7−91-7-9이고, 먹는 간식은 모두 5+3+4+5+6+5=285+3+4+5+6+5=28개다. 간선 1−21-2의 간식은 한 번만 센다.

예제1

  1. 예제 1

    입력
    11 3
    1 2 5
    2 3 3
    2 6 5
    3 4 4
    3 5 2
    1 7 6
    7 8 4
    7 9 5
    1 10 1
    10 11 1
    
    예상 출력
    28
    28
    28
    32
    30
    32
    28
    32
    32
    29
    30