만드는 중입니다

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

순환 거리

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

요약
가중치가 있는 트리에서 서로 다른 정점 k개를 골라, 순서대로 이은 순환 경로의 거리 합을 최대화하는 값을 구합니다.
난이도

어려움10점 중 9점

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

문제

'Alien' 문제에 나온 기법은 단순한 O(nk) 동적 계획법을 O(n log n)으로 바꾸는 좋은 방법이다. 이 기법을 쓰는 문제가 더 많아지면 대회가 더 나아질 수 있다. 300iq Contest 2에 남은 미해결 문제 두 개가 그런 예다.

가중치가 있는 트리가 주어진다. 정점은 nn개, 간선은 n−1n-1개다. ii번째 간선은 정점 uiu_i와 viv_i를 잇고, 길이는 lil_i이다. dis(u,v)dis(u, v)를 정점 uu와 vv 사이 단순 경로에 있는 간선 가중치의 합이라고 하자.

서로 다른 정점 kk개 p1,p2,…,pkp_1, p_2, \ldots, p_k를 골라 ∑dis(pi,p(i mod k)+1)\sum dis(p_i, p_{(i \bmod k)+1})를 최대로 만들어라. 그 최댓값을 출력한다.

입력

첫 줄에 테스트 케이스의 개수 TT (1≤T≤1051 \le T \le 10^5)가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에 정수 nn과 kk (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5, 2≤k≤n2 \le k \le n)가 주어진다.

이어지는 n−1n-1개의 줄에 정수 uiu_i, viv_i, lil_i (1≤ui,vi≤n1 \le u_i, v_i \le n, 1≤li≤1061 \le l_i \le 10^6)가 주어진다.

∑n≤2⋅105\sum n \le 2 \cdot 10^5이 보장된다.

출력

각 테스트 케이스마다 답을 나타내는 정수 하나를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    1
    5 3
    1 2 4
    1 3 1
    1 4 8
    4 5 9
    
    예상 출력
    44