luogu#P12002. 吃猫粮的玉桂狗

    ID: 36277 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>洛谷原创O2优化树形 DP洛谷月赛

吃猫粮的玉桂狗

题目描述

扶苏养了一只吃猫粮的玉桂狗。

扶苏有一个 nn 个点的树。她还买了 mm 种猫粮。对于第 ii 种猫粮,她买了 cic_i 份。保证 cin2c_i \geq \lfloor\frac{n}{2}\rfloor。扶苏想在这棵树的每个节点上都放上一份猫粮。

扶苏的玉桂狗会从 11 号节点出发在树上进行移动。每次移动时,它会从与当前节点相邻的节点中,选择一个还没到达过的节点,并移动到该节点。如果相邻的节点中没有未到达的节点,则移动停止。在移动过程中,每次到达一个新的节点(包括在节点 11),玉桂狗就会吃掉这个节点上的猫粮。

因为猫粮的成分各有不同,有 tt 个限制。第 ii 个限制是 (ai,bi)(a_i, b_i)。表示当玉桂狗吃完种类为 aia_i 的猫粮后,不能立刻吃种类为 bib_i 的猫粮(但是可以吃至少一个其他种类的猫粮后再吃该种类的猫粮),否则狗会生病。

扶苏想知道有多少方案,使得她能在这棵树上的每个节点都放上一份猫粮,且无论玉桂狗在树上沿任何路径移动,它都不会生病。

两种方案不同当且仅当存在一个节点 uu,使得 uu 在两种方案里放的猫粮的种类不同。

因为方案数太大,所以扶苏只关心这个数字除以 353,442,899353,442,899 的余数。

输入格式

第一行有三个整数,依次表示树的节点数 nn,猫粮种类数 mm 和限制数 tt
第二行有 mm 个整数,第 ii 个整数表示种类为 ii 的猫粮的数量 cic_i
接下来 n1n - 1 行,每行两个整数 ui,viu_i, v_i,表示树上有一条连接 ui,viu_i, v_i 的边。
接下来 tt 行,每行两个整数 ai,bia_i, b_i,表示一个限制。

输出格式

输出一行一个整数表示答案。

5 2 1
3 3
1 2
1 3
2 4
2 5
1 2
5

提示

数据规模与约定

  • 30%30\% 的数据,n,m5n,m \leq 5
  • 60%60\% 的数据,n,m20n,m \leq 20
  • 100%100\% 的数据,保证 1n,m501 \leq n, m \leq 501ui,vin1 \leq u_i, v_i \leq n1ai,bim1 \leq a_i, b_i \leq m1tm21 \leq t \leq m^2n2cin\lfloor\frac{n}{2}\rfloor \leq c_i \leq n,不存在 iji \neq j 使得 (ai,bi)=(aj,bj)(a_i, b_i) = (a_j, b_j)