만드는 중입니다

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

간선을 하나 그어서 루트까지 거리의 합을 최소로 만들기

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

요약
루트가 1인 가중치 트리에 가중치 0인 간선을 하나 추가해, 루트에서 각 정점까지 거리의 합이 가장 작아지는 값을 구합니다.
난이도

어려움10점 중 8점

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

문제

트리는 사이클이 없는 단순 연결 그래프이다.

정점이 NN개인 트리가 주어진다. 정점에는 1부터 NN까지 번호가 매겨져 있다. 트리의 루트는 항상 정점 1이고, 간선은 양의 가중치를 갖는다.

이 트리에 다음 연산을 최대 한 번 사용할 수 있다.

  • 임의의 정점 uu와 vv를 잇는 가중치가 00인 간선을 추가한다.

did_i를 정점 ii에서 루트 정점까지의 최단 거리라고 하자. 연산을 한 번만 사용하여 ∑i=1Ndi\sum_{i=1}^{N} d_i를 최소화하는 프로그램을 작성하시오.

입력

첫 번째 줄에 정점의 개수 NN이 주어진다. (1≤N≤200 000)(1\leq N\leq 200\,000)

두 번째 줄부터 N−1N-1줄에 걸쳐 간선이 잇는 두 정점의 번호 uu, vv와 간선의 가중치 ww가 공백으로 구분되어 주어진다. (1≤u,v≤N;(1\leq u,v\leq N; 1≤w≤1 000 000)1\leq w\leq 1\,000\,000)

출력

∑i=1Ndi\sum_{i=1}^{N} d_i의 최솟값을 출력한다.

예제2

  1. 예제 1

    입력
    3
    1 2 3
    1 3 4
    
    예상 출력
    3
    
  2. 예제 2

    입력
    6
    5 4 10
    2 5 3
    6 4 9
    3 6 8
    1 6 6
    
    예상 출력
    33