만드는 중입니다

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

Determination

시간 제한1초메모리 제한256 MB

요약
n×n 행렬의 모든 원소가 x이고 대각선과 각 부모-자식 간선의 두 방향 값만 따로 주어질 때, 행렬식을 10^9+7로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

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

문제

Chiaki에게는 다음과 같이 정의되는 n×nn \times n 행렬 MM이 있다.

  1. 각 i∈{1,2,…,n}i \in \{1,2,\dots,n\}에 대해 Mi,i=diM_{i,i}=d_i이다.
  2. 각 i∈{2,3,…,n}i \in \{2,3,\dots,n\}에 대해 Mpi,i=aiM_{p_i,i}=a_i, Mi,pi=biM_{i,p_i}=b_i이다.
  3. 그 밖의 경우 Mi,j=xM_{i,j}=x이다.

did_i, pip_i, aia_i, bib_i, xx가 주어질 때, det(M)\mathrm{det}(M)을 (109+7)(10^9+7)로 나눈 나머지를 구하라.

입력

입력은 여러 테스트 케이스로 이루어진다. 첫째 줄에는 테스트 케이스의 수를 나타내는 정수 TT가 주어진다 (1≤T≤1061 \le T \le 10^6). 각 테스트 케이스에 대해:

첫째 줄에는 두 정수 nn과 xx가 주어진다 (1≤n≤1061 \le n \le 10^6, 0≤x≤1090 \le x \le 10^9). 둘째 줄에는 nn개의 정수 d1,d2,…,dnd_1,d_2,\dots,d_n이 주어진다 (0≤di≤1090 \le d_i \le 10^9). 각 i=1,2,…,n−1i=1,2,\dots,n-1에 대해 이어지는 n−1n-1개의 줄 중 ii번째 줄에는 세 정수 pi+1,ai+1,bi+1p_{i+1}, a_{i+1}, b_{i+1}이 주어진다 (1≤pi+1≤i1 \le p_{i+1} \le i, 0≤ai+1,bi+1≤1090 \le a_{i+1}, b_{i+1} \le 10^9).

모든 테스트 케이스에서 nn의 합은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 정답을 나타내는 정수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 23333
    233
    3 1
    1 1 1
    1 2 3
    1 4 5
    3 1
    2 3 4
    1 4 5
    2 6 7
    
    예상 출력
    233
    1000000003
    999999923