만드는 중입니다

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

직접 하세요?

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

요약
각 업무는 담당 직원이나 그 직원의 상사가 맡을 수 있습니다. 직원별 f_i × (맡은 업무 수)^2의 합이 최소가 되는 값을 구합니다.
난이도

어려움10점 중 8점

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

문제

당신은 회사에서 자신을 포함한 직원 nn명으로 이루어진 팀의 팀장이다. 직원마다 1부터 nn까지의 정수인 사번이 있고, 당신의 사번은 1이다. 직원은 보통 #11, #22처럼 사번으로 줄여 부른다. 당신을 제외한 모든 직원에게는 직속 상사가 정확히 한 명 있으며, 그 상사의 사번은 본인보다 작다. 상사의 상사는 다음과 같이 재귀적으로 정의한다.

  • 직원 #ii가 직원 #jj의 직속 상사이면, #ii는 #jj의 상사이다.
  • #ii가 #jj의 상사이고 #jj가 #kk의 상사이면, #ii는 #kk의 상사이다.

당신을 포함한 모든 직원에게는 처음에 업무가 정확히 하나씩 배정된다. 업무는 배정받은 직원이 직접 하거나, 그 직원의 상사 중 누구든 한 명이 할 수 있다. 직원은 업무를 몇 개든 맡을 수 있지만, 많이 맡을수록 피로가 쌓인다. 직원 #ii의 피로도 상수는 fif_i이다. #ii가 업무를 총 mm개 하면 #ii의 피로도는 fi×m2f_i \times m^2이 된다.

전체 nn명 직원의 피로도 합을 최소화하라.

입력

첫 줄에 직원 수 nn이 주어진다 (2≤n≤5×1052 \le n \le 5 \times 10^5).

둘째 줄에는 n−1n-1개의 정수 b2,b3,…,bnb_2, b_3, \ldots, b_n이 주어진다. bib_i는 직원 #ii의 직속 상사이며, 1≤bi<i1 \le b_i < i이다.

셋째 줄에는 nn개의 정수 f1,f2,…,fnf_1, f_2, \ldots, f_n이 주어진다. fif_i는 직원 #ii의 피로도 상수이며, 1≤fi≤10121 \le f_i \le 10^{12}이다.

출력

모든 직원의 피로도 합의 최솟값을 출력한다.

힌트

그림 J.1은 세 예제의 상황과 해를 보여준다.

첫 번째 예제에서는 모든 직원이 자기 업무를 직접 하는 것이 유일한 최적해이다. 모든 직원에게 'Do it yourself!'라고 말하면 된다.

두 번째 예제에서는 1번 직원이 모든 업무를 맡는 것이 유일한 최적해이다. 모든 직원에게 'Leave it to me!'라고 말하면 된다.

세 번째 예제에서 최적해 중 하나는 다음과 같다.

  • 1번 직원이 1번과 2번 업무를 맡는다. 1번 직원의 피로도는 1×22=41 \times 2^2 = 4이다.
  • 2번 직원이 4번 업무를 맡는다. 2번 직원의 피로도는 2×12=22 \times 1^2 = 2이다.
  • 3번 직원은 자기 업무를 한다. 3번 직원의 피로도는 4×12=44 \times 1^2 = 4이다.
  • 4번 직원은 아무 업무도 하지 않는다. 4번 직원의 피로도는 8×02=08 \times 0^2 = 0이다.

피로도의 합은 4+2+4+0=104 + 2 + 4 + 0 = 10이다. 다른 최적해도 있다. 1번, 2번, 3번 직원이 각자 자기 업무를 하고, 1번 직원이 4번 업무를 추가로 맡는 경우이다.

예제3

  1. 예제 1

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

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

    입력
    4
    1 1 2
    1 2 4 8
    
    예상 출력
    10