만드는 중입니다

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

거리의 기댓값

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

요약
각 정점이 a_j에 비례한 확률로 앞선 정점에 붙는 무작위 트리가 주어집니다. 각 질의 (u, v)에 대해 두 정점 사이의 기댓값 거리를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

NN개의 정점으로 이루어진 트리 TNT_{N}을 다음과 같은 방법으로 생성한다.

  • T1T_{1}은 1번 정점만으로 이루어진 트리다.
  • 2 이상의 ii에 대해 TiT_{i}는 Ti−1T_{i-1}에 ii번 정점을 추가하고, 이를 Ti−1T_{i-1}의 정점 중 하나와 간선으로 이은 트리다. ii번 정점이 jj번 정점과 연결될 확률은 aja1+⋯+ai−1\frac{a_j}{a_1+ \cdots + a_{i-1}}이다. ii번 정점이 jj번 정점과 연결되었다면 그 간선의 길이는 ci+cjc_i + c_j이다.

QQ개의 쿼리가 주어진다. 각 쿼리마다 uu와 vv가 주어지면, TNT_{N}에서 uu번 정점과 vv번 정점 사이 거리의 기댓값을 구하라.

입력

첫 번째 줄에 NN과 QQ가 주어진다. (2≤N,Q≤300 000)(2 \le N, Q \le 300\,000)

두 번째 줄에 N−1N-1개의 정수 a1,a2,⋯ ,aN−1a_1, a_2, \cdots, a_{N-1}이 공백으로 구분되어 주어진다. (1≤ai≤2 000)(1 \le a_i \le 2\,000)

세 번째 줄에 NN개의 정수 c1,c2,⋯ ,cNc_1, c_2, \cdots, c_N이 공백으로 구분되어 주어진다. (1≤ci≤2 000)(1 \le c_i \le 2\,000)

이후 QQ개의 줄에 걸쳐 각 줄에 uu와 vv가 공백으로 구분되어 주어진다. (1≤u,v≤N)(1 \le u, v \le N)

출력

ii번째 쿼리의 답을 ansi=piqians_i=\frac{p_i}{q_i}라 하자. 여기서 pip_i와 qiq_i는 서로소인 음이 아닌 정수이다. ii번째 줄에는 00 이상 109+710^9+7 미만의 정수 xix_i이며 pi≡qixi(mod109+7)p_i \equiv q_i x_i \pmod{10^9+7}를 만족하는 값을 출력한다. 이 수는 유일하게 존재함을 증명할 수 있다.

예제2

  1. 예제 1

    입력
    5 7
    1 1 1 1
    1 2 4 8 16
    1 3
    2 5
    4 3
    1 5
    3 3
    4 5
    1 2
    
    예상 출력
    7
    666666697
    15
    666666697
    0
    333333366
    3
    
  2. 예제 2

    입력
    5 4
    17 19 23 29
    2 3 5 7 11
    1 2
    3 4
    5 2
    3 5
    
    예상 출력
    5
    927495315
    106531441
    450222593