만드는 중입니다

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

교육적인 트리 문제

면접 대비

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

요약
루트에서 아래로 내려갈수록 값이 커지지 않는 트리에서, 부모가 선택된 정점들만 골라 크기 k별 최대 합을 구합니다.
난이도

보통10점 중 4점

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

문제

NN개의 정점으로 이루어진 트리가 주어진다. 각 정점에는 11번부터 NN번까지 중복 없이 번호가 붙어 있으며, 11번 정점은 트리의 루트이다.

2≤i≤N2 \leq i \leq N인 모든 정수 ii에 대해, ii번 정점의 부모 정점은 pip_i번 정점이다.

ii번 정점에는 정수 AiA_i가 적혀 있고, 항상 Ai≤ApiA_i \leq A_{p_i}가 성립한다. 정점을 몇 개 선택하여, 선택한 정점에 적힌 정수의 합을 최대로 만들어야 한다. 선택한 모든 정점은 11번 정점이거나, 부모 정점도 선택되어 있어야 한다.

선택할 정점의 개수에 따라 문제의 정답을 구하라.

입력

첫째 줄에 정수 NN이 주어진다. (2≤N≤300 000)(2 \leq N \leq 300\ 000)

둘째 줄에 수열 p2,p3,⋯ ,pNp_2, p_3, \cdots, p_N이 공백으로 구분되어 주어진다. (1≤pi<i)(1 \leq p_i < i)

셋째 줄에 수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다. (1≤Ai≤109)(1 \leq A_i \leq 10^9)

출력

첫째 줄부터 NN개의 줄에 걸쳐, ii번째 줄에는 정점을 정확히 ii개 선택했을 때의 정답을 출력한다.

예제1

  1. 예제 1

    입력
    4
    1 1 2
    4 4 3 1
    
    예상 출력
    4
    8
    11
    12