만드는 중입니다

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

하나의 경로

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

요약
트리의 간선을 i개(0부터 K까지) 끊고 같은 가중치로 다른 두 정점 사이에 다시 이을 때, 만들 수 있는 그래프 가중치의 최댓값을 구합니다.
난이도

어려움10점 중 8점

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

문제

정점이 NN개인 트리 TT가 주어진다. 각 간선에는 양의 정수 가중치가 있다.

이 트리에 대해 다음 연산을 수행할 수 있다.

  • 그래프에서 간선을 하나 삭제한 뒤, 서로 다른 임의의 두 정점 사이에 새 간선을 추가한다. 새 간선의 가중치는 삭제한 간선의 가중치와 같아야 한다. 결과 그래프는 트리일 필요가 없다.

경로의 가중치는 경로에 포함된 간선 가중치의 합이다. 두 정점 uu와 vv의 거리는 uu에서 vv까지의 최단 경로, 즉 가중치가 최소인 경로의 가중치로 정의한다. 그러한 경로가 없으면 거리는 00이다.

그래프의 가중치는 임의의 두 정점 사이 거리의 최댓값이다.

연산을 정확히 ii번 수행하여 얻을 수 있는 그래프의 가중치 최댓값을 i=0,1,…,Ki=0,1,\dots,K에 대해 각각 구하라.

입력

첫 줄에 공백으로 구분된 두 정수 NN과 KK가 주어진다. 이어지는 N−1N-1개의 줄 중 ii번째 줄에는 공백으로 구분된 세 정수 uiu_i, viv_i, wiw_i가 주어지며, 이는 서로 다른 두 정점 uiu_i와 viv_i를 잇는 가중치 wiw_i의 무방향 간선을 나타낸다. 간선들이 트리를 이룬다는 것은 보장된다.

출력

K+1K+1개의 정수를 공백으로 구분하여 출력한다. ii번째 정수는 연산을 정확히 i−1i-1번 수행하여 얻을 수 있는 그래프의 가중치 최댓값이다.

제한

  • 2≤N≤2 0002\le N\le 2\,000
  • 0≤K≤2 0000\le K\le 2\,000
  • 1≤ui<vi≤N1\le u_i<v_i\le N (1≤i≤N−11\le i\le N-1)
  • 1≤wi≤1091\le w_i\le 10^9 (1≤i≤N−11\le i\le N-1)

예제2

  1. 예제 1

    입력
    5 1
    1 3 2
    4 5 4
    3 4 3
    2 3 7
    
    예상 출력
    14 16
    
  2. 예제 2

    입력
    7 2
    1 2 4
    2 3 6
    2 4 2
    4 5 5
    2 6 1
    4 7 3
    
    예상 출력
    13 20 21