직접 하세요?
시간 제한10초메모리 제한1024 MB
각 업무는 담당 직원이나 그 직원의 상사가 맡을 수 있습니다. 직원별 f_i × (맡은 업무 수)^2의 합이 최소가 되는 값을 구합니다.
문제
당신은 회사에서 자신을 포함한 직원 명으로 이루어진 팀의 팀장이다. 직원마다 1부터 까지의 정수인 사번이 있고, 당신의 사번은 1이다. 직원은 보통 #, #처럼 사번으로 줄여 부른다. 당신을 제외한 모든 직원에게는 직속 상사가 정확히 한 명 있으며, 그 상사의 사번은 본인보다 작다. 상사의 상사는 다음과 같이 재귀적으로 정의한다.
- 직원 #가 직원 #의 직속 상사이면, #는 #의 상사이다.
- #가 #의 상사이고 #가 #의 상사이면, #는 #의 상사이다.
당신을 포함한 모든 직원에게는 처음에 업무가 정확히 하나씩 배정된다. 업무는 배정받은 직원이 직접 하거나, 그 직원의 상사 중 누구든 한 명이 할 수 있다. 직원은 업무를 몇 개든 맡을 수 있지만, 많이 맡을수록 피로가 쌓인다. 직원 #의 피로도 상수는 이다. #가 업무를 총 개 하면 #의 피로도는 이 된다.
전체 명 직원의 피로도 합을 최소화하라.
입력
첫 줄에 직원 수 이 주어진다 ().
둘째 줄에는 개의 정수 이 주어진다. 는 직원 #의 직속 상사이며, 이다.
셋째 줄에는 개의 정수 이 주어진다. 는 직원 #의 피로도 상수이며, 이다.
출력
모든 직원의 피로도 합의 최솟값을 출력한다.
힌트

그림 J.1은 세 예제의 상황과 해를 보여준다.
첫 번째 예제에서는 모든 직원이 자기 업무를 직접 하는 것이 유일한 최적해이다. 모든 직원에게 'Do it yourself!'라고 말하면 된다.
두 번째 예제에서는 1번 직원이 모든 업무를 맡는 것이 유일한 최적해이다. 모든 직원에게 'Leave it to me!'라고 말하면 된다.
세 번째 예제에서 최적해 중 하나는 다음과 같다.
- 1번 직원이 1번과 2번 업무를 맡는다. 1번 직원의 피로도는 이다.
- 2번 직원이 4번 업무를 맡는다. 2번 직원의 피로도는 이다.
- 3번 직원은 자기 업무를 한다. 3번 직원의 피로도는 이다.
- 4번 직원은 아무 업무도 하지 않는다. 4번 직원의 피로도는 이다.
피로도의 합은 이다. 다른 최적해도 있다. 1번, 2번, 3번 직원이 각자 자기 업무를 하고, 1번 직원이 4번 업무를 추가로 맡는 경우이다.