만드는 중입니다

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

트리 위의 게임

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

요약
트리에서 경로의 카드 색을 뽑고 GCD로 점수를 계산한 뒤 카드 하나를 바꿉니다. 각 친구의 점수를 10^9+7로 나눈 나머지로 출력합니다.
난이도

어려움10점 중 9점

유형
트리, 비트 연산, 세그먼트 트리, 정수론
정답자
아직 제출이 없습니다

문제

친구 mm명이 00부터 m−1m-1까지 번호가 붙은 채로 게임을 한다. 색이 cc가지인 카드가 있으며, 색은 00부터 c−1c-1까지 번호가 붙어 있다. 색 ii 카드마다 고정된 값 pip_i가 있다.

게임을 시작할 때 각 플레이어는 카드를 원하는 만큼 고르되, 같은 색 카드는 한 장만 고른다. 서로 다른 친구가 같은 색 카드를 골라도 된다. 덱의 점수는 덱에 있는 카드 값들의 최대공약수(GCD)다. 빈 덱의 점수는 00이다.

게임은 00부터 n−1n-1까지 번호가 붙은 노드 nn개로 이루어진 트리 위에서 진행된다. 노드 vv에는 색 cvc_v의 카드가 한 장 있다. 서로 다른 노드가 같은 색 카드를 가질 수 있다.

게임은 mm라운드로 진행된다. ii라운드에서는 ii번째 친구가 플레이한다. 먼저 친구는 서로 다른 두 정점 vv와 uu를 고른다. 그다음 vv에서 uu까지 가는 경로 위의 모든 노드 viv_i(양 끝 vv와 uu 포함)에 대해, 본인을 포함한 모든 플레이어가 색 cvic_{v_i}의 카드를 한 장씩 뽑는다. 이미 그 색 카드를 가지고 있던 플레이어는 두 장을 모두 버린다. 이후 친구는 모든 플레이어 덱 점수의 합(본인 덱 포함)을 얻는다. 마지막으로 친구는 노드 ww를 고르고, 더미에서 색 yy의 새 카드를 뽑아 ww의 카드와 바꾼다. 기존 카드는 버려지며 라운드가 끝난다.

입력

첫 줄에는 정수 mm, cc, nn이 주어진다 (2≤n,m≤1052 \le n, m \le 10^5, 1≤c≤201 \le c \le 20). 각각 친구 수(라운드 수), 카드 색의 수, 노드 수다.

둘째 줄에는 정수 p0,p1,…,pc−1p_0, p_1, \dots, p_{c-1} (0≤pi≤1090 \le p_i \le 10^9)이 주어진다.

이어지는 mm개의 줄마다 정수 xx (0≤x≤c0 \le x \le c)로 시작하며, 이는 그 친구가 처음 가진 카드 수다. 뒤이어 xx개의 정수 y0,y1,…,yx−1y_0, y_1, \dots, y_{x-1} (0≤yj<c0 \le y_j < c)이 주어지며, 이는 그 카드들의 색이다.

다음 줄에는 정수 c0,c1,…,cn−1c_0, c_1, \dots, c_{n-1} (0≤cv<c0 \le c_v < c)이 주어진다. cvc_v는 노드 vv 카드의 색이다.

이후 n−1n-1개의 줄에 간선 uu, vv (0≤u,v<n0 \le u, v < n)가 주어진다. 이 간선들은 트리를 이룬다.

마지막 mm개의 줄에는 라운드 정보 uu, vv, ww, yy (0≤u,v,w<n0 \le u, v, w < n; u≠vu \ne v; 0≤y<c0 \le y < c)가 주어진다. uu와 vv는 그 라운드에서 고른 두 노드이고, ww는 카드를 바꿀 노드, yy는 새 카드의 색이다.

출력

한 줄에 mm개의 정수 points0,points1,…,pointsm−1points_0, points_1, \dots, points_{m-1}을 출력한다. pointsipoints_i는 게임이 끝났을 때 ii번째 친구가 얻은 점수를 109+710^9 + 7로 나눈 나머지다.

예제2

  1. 예제 1

    입력
    3 4 7
    0 2 3 6
    2 1 2
    3 0 2 3
    2 0 1
    2 1 2 3 0 1 1
    0 1
    2 0
    3 0
    1 4
    6 4
    4 5
    5 2 4 1
    6 1 1 2
    4 2 0 3
    
    예상 출력
    6 4 9
    
  2. 예제 2

    입력
    7 4 8
    28 49 88 49
    1 1
    3 2 0 3
    0
    1 3
    0
    0
    1 0
    2 2 2 2 3 0 1 2
    0 2
    0 3
    2 6
    0 4
    3 7
    7 1
    2 5
    1 4 4 1
    3 6 4 2
    7 6 4 2
    6 2 2 2
    4 2 7 0
    2 3 5 3
    5 1 4 1
    
    예상 출력
    207 13 121 253 13 253 106