만드는 중입니다

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

이진 트리 그리기

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

요약
이진 트리 노드에 1 이상 V 이하의 x 좌표를 배정하는 방법 수를 셉니다. 배열 A에 고정된 좌표는 반드시 지켜야 하며, 답은 444449로 나눈 나머지입니다.
난이도

보통10점 중 7점

유형
트리, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

Bert는 최근 이진 트리(Binary Tree)의 매력에 푹 빠져 있다. 어떤 트리가 이진 트리이려면 각 노드의 자식이 최대 2개여야 한다. 편의상 이진 트리 TT의 노드는 1번부터 NN번까지 번호가 붙어 있으며, ii번 노드의 왼쪽 자식은 L_iL\_i, 오른쪽 자식은 R_iR\_i로 표현한다. 해당 방향에 자식이 없으면 이 값은 0이다.

아래 트리는 N=3N = 3, L=[2,0,0]L = [2, 0, 0], R=[3,0,0]R = [3, 0, 0]인 경우를 나타내며, 이 트리의 루트는 1번 노드이다.

Bert는 이진 트리 그리기를 좋아한다. 먼저 충분히 큰 정수 V≥NV \ge N을 고정한 뒤, 아래 규칙에 따라 여러 가지 방법으로 트리를 그린다. 노드 ii의 정수 좌표를 (xi,yi)(x_i, y_i)라 하자.

  1. 1≤xi≤V1 \le x_i \le V가 되도록 xix_i를 골라야 한다.
  2. 노드 ii가 루트라면 yi=−1y_i = -1이어야 한다.
  3. 노드 pp가 노드 ii의 부모라면 yi=yp−1y_i = y_p - 1이어야 한다.
  4. 루트가 아닌 노드 ii가 노드 pp의 왼쪽 자식이라면(Lp=iL_p = i), 반드시 xi<xpx_i < x_p이어야 하며, ii의 모든 자식 및 자손 노드 jj에 대해서도 xj<xpx_j < x_p이어야 한다.
  5. 루트가 아닌 노드 ii가 노드 pp의 오른쪽 자식이라면(Rp=iR_p = i), 반드시 xi>xpx_i > x_p이어야 하며, ii의 모든 자식 및 자손 노드 jj에 대해서도 xj>xpx_j > x_p이어야 한다.

위 조건을 모두 만족하는 NN개의 좌표를 정하면 이진 트리를 그릴 수 있다고 한다. 두 그림에서 같은 노드의 xx 좌표 값이 다르면 두 그림은 다른 방법으로 그려진 것이다. (위 규칙을 따르면 각 노드의 yy 좌표 값은 항상 같다.) 위 트리에서 V=4V = 4라면 아래와 같은 4가지 방법으로 그릴 수 있다.

Bert는 임의의 이진 트리가 주어졌을 때 위 방법을 모두 지키면서 몇 가지 다른 방법으로 그릴 수 있는지 궁금해졌다. 이를 지켜보던 Alice는 그 문제는 너무 쉽다며 새로운 문제를 냈다.

  • NN개의 노드 중 일부 노드(0개일 수도 있고 NN개일 수도 있다)의 xx 좌표를 고정한 뒤 위 규칙에 따라 그린다면, 몇 가지 다른 방법으로 그릴 수 있을까?
  • 구체적으로 정수 배열 AA가 주어진다. Ai=0A_i = 0이면 노드 ii의 좌표는 고정되지 않은 것이고, Ai∈[1,V]A_i \in [1, V]이면 노드 ii의 좌표는 반드시 xi=Aix_i = A_i가 되어야 한다.

예를 들어 A=[0,1,0]A = [0, 1, 0]이면, 앞서 본 4개의 트리 중 x2=1x_2 = 1을 만족하는 왼쪽 3가지 방법으로 그릴 수 있다. 같은 트리에 대해 A=[1,0,0]A = [1, 0, 0]이면 조건을 만족하며 그릴 방법이 없다. 앞서 본 대로 4가지 방법으로 그릴 수는 있지만, x1=1x_1 = 1인 경우는 불가능하다.

입력으로 NN, VV와 세 정수 배열 AA, LL, RR이 주어졌을 때, Alice의 조건을 만족하며 이진 트리를 그릴 수 있는 방법의 수를 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 NN과 VV가 공백으로 구분되어 주어진다. 둘째 줄에는 배열 AA가, 셋째 줄에는 배열 LL이, 넷째 줄에는 배열 RR이 주어진다. 각 줄의 배열은 공백으로 구분된 NN개의 정수이다.

출력

각 테스트 케이스의 정답을 한 줄에 하나씩 출력한다. 수가 매우 클 수 있으므로 444 449444\,449로 나눈 나머지를 출력한다.

제한

  • 1≤T≤101 \le T \le 10
  • 1≤N≤100 0001 \le N \le 100\,000
  • N≤V≤1 000 000 000N \le V \le 1\,000\,000\,000
  • 1≤i≤N1 \le i \le N인 ii에 대하여
    • 0≤Ai≤V0 \le A_i \le V
    • 0≤Li,Ri≤N0 \le L_i, R_i \le N
  • 입력으로 주어지는 이진 트리는 NN개의 노드, N−1N-1개의 간선을 가지며, 고유한 루트가 존재하고 사이클이 없는 정상적인 이진 트리임이 보장된다.

예제1

  1. 예제 1

    입력
    6
    3 4
    0 0 0
    2 0 0
    3 0 0
    3 4
    1 0 0
    2 0 0
    3 0 0
    3 4
    0 1 0
    2 0 0
    3 0 0
    5 7
    0 4 0 0 0
    0 3 0 0 0
    2 4 0 5 0
    5 10
    0 5 0 0 0
    0 3 0 0 0
    2 4 0 5 0
    6 10
    0 0 3 6 0 8
    2 3 0 0 6 0
    0 5 4 0 0 0
    
    예상 출력
    4
    0
    3
    9
    60
    1