만드는 중입니다

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

무작위 길

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

요약
각 간선의 방향이 무작위로 정해진 트리에서 시작 공원마다 안전한 길만 골라 걷는 여행의 기대 아름다움을 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

Vito는 공원이 nn개 있는 도시에 산다. 공원에는 11번부터 nn번까지 번호가 붙어 있다. 공원들은 n−1n - 1개의 도로로 연결되어 있어서 임의의 두 공원 사이에 경로가 있다. ii번 공원의 아름다움 값은 viv_i이다.

어젯밤 Vito는 도시를 무작위로 돌아다니기로 했다. 공원을 방문하면 그 공원에서 이어진 도로 중 하나를 같은 확률로 고르고, 그 도로의 반대편 공원으로 이동한다. 집을 나서기 전 창밖을 보니 모든 도로에는 파란 뱀이나 빨간 뱀이 한 마리씩 있었다. 파란 뱀은 번호가 작은 공원에서 큰 공원으로 지나가는 사람을 공격하고, 빨간 뱀은 번호가 큰 공원에서 작은 공원으로 지나가는 사람을 공격한다.

Vito는 공격받고 싶지 않아서, 도로를 무작위로 고를 때 안전하게 지나갈 수 있는 도로만 고려한다. 그는 긴 산책을 좋아해서 안전하게 지나갈 수 있는 도로가 하나라도 남아 있는 동안은 멈추지 않는다.

각 도로에 파란 뱀이 있을 확률과 빨간 뱀이 있을 확률이 같다고 하자. 그렇다면 ii번 공원에서 출발하는 여정의 기대 아름다움은 얼마인가? 경로의 아름다움은 그 경로에서 방문한 공원들의 아름다움 값의 합이다. 기대 아름다움은 가능한 모든 경로에 대해 경로의 아름다움과 Vito가 그 경로를 택할 확률의 곱을 모두 더한 값이다.

입력

첫째 줄에 nn이 주어진다 (2≤n≤1062 \le n \le 10^6). 둘째 줄에는 n−1n - 1개의 정수 pip_i (1≤pi<i1 \le p_i < i)가 주어지며, 이는 (i+1)(i + 1)번 공원과 pip_i번 공원을 잇는 도로가 있다는 뜻이다. 셋째 줄에는 nn개의 정수 viv_i (0≤vi≤1060 \le v_i \le 10^6)가 주어진다.

출력

ii번 공원에서 출발하는 Vito 여정의 기대 아름다움이 정수 aa, bb에 대해 ab\frac{a}{b}이면, ii번째 줄에 ab−1 mod (109+7)a b^{-1} \bmod (10^9 + 7)을 출력한다. 여기서 b−1b^{-1}은 bb의 109+710^9 + 7에 대한 모듈러 역원이다.

힌트

첫 번째 예제에서 1번 공원에서 출발한 기대 아름다움은 52\frac{5}{2}이고, 이를 법 109+710^9 + 7로 나타내면 5⋅2−1 mod (109+7)=5000000065 \cdot 2^{-1} \bmod (10^9 + 7) = 500000006이다. 2번 공원에서 출발하면 기대 아름다움은 2이다.

두 번째 예제에서 두 뱀이 모두 빨간 뱀일 확률은 14\frac{1}{4}이다. 이 경우 1번 공원에서 출발하면 Vito는 갈 도로를 무작위로 고른다.

예제3

  1. 예제 1

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

    입력
    3
    1 1
    8 8 8
    
    예상 출력
    14
    14
    14
    
  3. 예제 3

    입력
    11
    1 1 1 2 3 4 1 2 6 2
    1 1000 5 3 18 200 8 9 0 2 2
    
    예상 출력
    968750272
    610352580
    450521029
    536458466
    199219275
    662760680
    190972315
    90277951
    824219264
    941840425
    532552597