만드는 중입니다

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

거리 합

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

요약
루트가 1인 가중치 트리에서 도시 1부터 k까지의 거리 합이 최소가 되는 값을 각 k마다 구합니다.
난이도

어려움10점 중 8점

유형
트리, 그리디, DFS
정답자
아직 제출이 없습니다

문제

도시가 nn개 있고 도로가 n−1n - 1개 있다. 이들은 트리를 이룬다. 도시에는 1번부터 nn번까지 번호가 붙어 있으며, 1번 도시가 루트이다. 각 ii에 대해 도시 ii의 부모는 도시 pip_i이고, ii와 pip_i 사이의 거리는 did_i이다.

스누크는 각 1≤k≤n1 \le k \le n에 대해 다음 문제를 풀려고 한다. 한 도시에서 도시 1,…,k1, \ldots, k까지의 거리 합이 가능한 최솟값을 구한다. 즉, 다음 값을 계산한다.

min⁡1≤v≤n∑i=1kdist(i,v)\min_{1 \le v \le n} \sum_{i=1}^{k} dist(i, v)

여기서 dist(u,v)dist(u, v)는 도시 uu와 vv 사이의 거리이다.

입력

첫째 줄에 정수 nn(1≤n≤2×1051 \le n \le 2 \times 10^5)이 주어진다. 이어지는 n−1n - 1개의 줄에는 도시 i+1i + 1의 부모 pi+1p_{i+1}과 도시 i+1i + 1과 부모 사이의 거리 di+1d_{i+1}이 각각 두 정수로 주어진다(1≤pi≤n1 \le p_i \le n, 1≤di≤2×1051 \le d_i \le 2 \times 10^5). pip_i로 표현되는 그래프는 트리이다.

출력

nn개의 줄을 출력한다. ii번째 줄에는 k=ik = i일 때의 답을 출력한다.

예제2

  1. 예제 1

    입력
    10
    4 1
    1 1
    3 1
    3 1
    5 1
    6 1
    6 1
    8 1
    4 1
    
    예상 출력
    0
    3
    3
    4
    5
    7
    10
    13
    16
    19
    
  2. 예제 2

    입력
    15
    1 3
    12 5
    5 2
    12 1
    7 5
    5 1
    6 1
    12 1
    11 1
    12 4
    1 1
    5 5
    10 4
    1 2
    
    예상 출력
    0
    3
    9
    13
    14
    21
    22
    29
    31
    37
    41
    41
    47
    56
    59