loj#P3626. 「2021 集训队互测」愚蠢的在线法官

「2021 集训队互测」愚蠢的在线法官

题目描述

你发现 SOJ,即 Stupid Online Judge,变得越来越愚蠢了,比如 SOJ 并不会做饭而你的狗勾会自己跑到厨房里做四菜一汤。

经过一番探索,你发现 SOJ 愚蠢的原因竟是它内置的在线线性代数求解系统!管理员们由于沉迷于线性代数,整天在研究如何快速计算 20482048 阶行列式,从而使得 SOJ 无人维护,甚至还占用了 SOJ 大量的性能。

这个系统里内置了(能在一秒内求解((阶为 114514114514 秩为 114513114513 的方阵)的行列式)的程序),本着吃饱了撑着的心理,你决定喂给这个系统若干行列式,但是你并不知道它啥时被你喂撑。为了更好地知道这个系统有没有被搞坏,你决定先自己计算出你提供的问题的答案。

当然管理员们认为他们自己的智商是在线的,所以他们写了一套规则防止这个系统被搞坏,于是你只能以如下的形式上传这个行列式:

  • 给系统一棵 nn 个点的有根树和每个点的点权 viv_i,且令根为节点 11,同时传给系统一个长度为 kk 的数组 AA,构造阶为 kk 的方阵 BB 其中 bi,j=vLCA(Ai,Aj)b_{i,j} = v_{\mathrm{LCA}(A_i, A_j)},即:
$$B = \begin{bmatrix} v_{\mathrm{LCA}(A_1, A_1)} & v_{\mathrm{LCA}(A_1, A_2)} & \cdots & v_{\mathrm{LCA}(A_1, A_k)} \\ v_{\mathrm{LCA}(A_2, A_1)} & v_{\mathrm{LCA}(A_2, A_2)} & \cdots & v_{\mathrm{LCA}(A_2, A_k)} \\ \vdots & \vdots & \ddots & \vdots \\ v_{\mathrm{LCA}(A_k, A_1)} & v_{\mathrm{LCA}(A_k, A_2)} & \cdots & v_{\mathrm{LCA}(A_k, A_k)} \\ \end{bmatrix} $$
  • 其中 LCA(x,y)\mathrm{LCA}(x, y) 为节点 xxyy 的最近公共祖先,当你传入数组 AA 后,将计算构造出来的这个方阵的行列式。

有了这样一套规则,SOJ 显得更蠢了。由于担心过大的数字会吓坏没见过世面的管理员们,你决定将方阵的值模 998244353998244353 后再给管理员们好好康康。

输入格式

第一行两个正整数 n,kn, k,分别表示树的节点数和 AA 的长度。

第二行 nn 个非负整数 viv_i 表示每个点的点权。

第三行 kk 个正整数 AiA_i 表示传给系统的数组。

下面 n1n - 1 行,每行两个正整数 u,vu, v,表示树上的一条无向边 (u,v)(u, v)

保证给出的边构成一棵树。

输出格式

一行一个范围在 [0,998244353)[0, 998244353) 的非负整数,表示答案。

3 2
1 2 3
2 3
1 2
1 3
5
5 1
225348648 810032443 884606707 501975769 428153443
4
1 5
3 5
2 1
4 1
501975769
10 5
948691377 65381930 199744893 359204892 47703053 527403959 682504024 581643492 374119650 567695458
5 7 3 8 2
6 3
8 6
10 3
9 3
2 6
1 2
5 3
7 9
4 1
141670859

数据范围与提示

对于所有数据,满足 1n,k5×1051 \leq n, k \leq 5 \times 10^5vi[0,998244353)v_i \in [0, 998244353)Ai[1,n]A_i \in [1, n]

子任务编号 子任务分值 子任务依赖 特殊条件
11 33 k>nk > n
22 66 n10n \leq 10
33 1111 k600k \leq 600
44 2929 22 n3000n \leq 3000
55 1616 AA1n1 \dots n 的排列
66 3535 1,3,4,51,3,4,5