Lucky Stars Management
시간 제한2초메모리 제한1024 MB
회사 트리 구조와 각 직원의 기대 벌금 E_i가 주어집니다. 주어진 값이 성립하는지 판단하고, 성립한다면 빌의 최소 연봉을 구합니다.
문제
회사 Lucky Stars에는 명의 직원이 있으며, 회사에서의 직급 순서대로 1번부터 번까지 번호가 붙어 있다. 사장 Bill의 사원 번호는 1번이다. Bill을 제외한 모든 직원에게는 직속 상사가 정확히 한 명 있다. 직원 의 직속 상사는 이다. 직원 의 연봉 는 이상 이하의 정수이다.
어느 날 Bill은 미래를 언제나 정확히 맞히는 점쟁이를 찾아갔다. 점쟁이는 "언젠가 가지 종류의 실수가 일어나고, 그때 Lucky Stars의 경영이 어려워진다"고 말했다.
실수는 각각 정확히 직원 한 명이 저지른다. 에 대해 실수를 직원 가 저지를 확률은 이다. 실수들은 서로 독립이므로, 한 직원이 여러 번 실수할 수도 있다.
Bill은 점쟁이의 말이 맞는다면 개인 책임을 엄격히 묻기로 했다. 하루에 가지 종류의 실수가 일어나면, Bill은 벌금을 낼 직원을 한 명 고르려 한다. 직원은 다음 규칙으로 정한다.
- 직원이 실수를 저지르면, 그 직원과 그 위의 모든 상사(직속 상사, 상사의 상사, 그리고 Bill까지)가 책임을 진다.
- 가지 실수 모두에 책임을 지는 직원 중 번호가 가장 큰 직원이 벌금을 낸다.
- 에 대해 번째 실수를 저지른 직원의 연봉을 라 하면, 벌금은 이다.
Bill은 점쟁이의 말이 맞는다고 가정하고 직원 가 낼 벌금의 기댓값 를 계산한 뒤, 이를 로 나눈 나머지로 적었다. 에 대해 기댓값을 로 나타내면(와 는 서로소인 정수이고, 는 로 나누어떨어지지 않는다), 답은 div 를 로 나눈 나머지이다.
이제 회사 구조( 값)와 Bill이 계산한 벌금 기댓값 가 주어진다. 주어진 정보가 모두 맞을 수 있는지 판단하고, 맞을 수 있다면 Bill 연봉의 최솟값을 구하라.
입력
첫 줄에 두 정수 ()과 (, 는 홀수)가 주어진다. 둘째 줄에는 개의 정수 ()이 주어지며, 이는 직원 의 직속 상사 번호이다. 이면 둘째 줄은 비어 있다. 셋째 줄에는 개의 정수 ()가 주어지며, 이는 직원별로 계산된 벌금 기댓값이다.
출력
주어진 값이 확실히 잘못되었다면 을 출력한다. 그렇지 않으면 Bill 연봉의 최솟값을 정수 하나로 출력한다.