#P17397. [ICPC 2018 Shenyang R] Counting Sheep in Ami Dongsuo

[ICPC 2018 Shenyang R] Counting Sheep in Ami Dongsuo

题目描述

阿咪东索(Ami Dongsuo),藏语中的山神,守护着祁连山,汉语名为牛心山。阿咪东索是一座神山,因关于卓尔山的美丽爱情故事而闻名。周围的环境促使阿咪东索形成了一片巨大的羊群牧场。

根据杰出的生态学家马先生的一份令人震惊的新报告,阿咪东索总共有 nn 片不同的牧场。在当地牧民的帮助下,马先生描述了每片牧场中的羊的数量以及不同牧场之间的所有路径。

今天,在他的带领下,三位冒险者 Alice、Bob 和 Carol 决定游览阿咪东索的一些牧场。马先生向他们展示了一个要求,用一个整数 kk 来描述,他们必须满足这个要求。这三位冒险者将从同一片牧场开始他们的旅程,并游览三条不同的路线,出发点是他们自己选择的,因此可以是任何地方。此外,一条路线可能会经过一片或多片牧场。由于山顶的海拔将近 50005000 米,上山甚至攀登是一项非常累人的工作,冒险者们达成一致:一条路线上的所有牧场的海拔在游览顺序中必须严格递减。如果沿着各自的路线走下去,他们最终会到达某些牧场,这些牧场可以重复。马先生用 kk 描述的要求是:这三个目的地(考虑重复)的羊的总数等于 kk。

现在,马先生希望有人能告诉他,对于任意正整数 kk,有多少种不同的计划可供 Alice、Bob 和 Carol 选择并能满足他的要求。在本题中,我们将一个计划视为共享同一个出发点的三条不同路线的集合。如果两条路线的出发点不同,或者它们依次经过的路径序列不同,则认为这两条路线不同。如果存在至少一条路线包含在一个计划中而不在另一个计划中,则认为两个计划不同。

输入格式

输入包含多组测试数据,第一行包含一个正整数 TT,表示测试数据的组数,最多为 55。

对于每组测试数据,第一行包含三个整数 nn、mm 和 ww,分别表示牧场的数量、牧场之间路径的数量以及牧场羊的数量上界,满足 1≤n≤100001 \leq n \leq 10000,1≤m≤300001 \le m \le 30000,1≤w≤4001 \le w \le 400。

接下来一行包含 nn 个正整数,其中第 ii 个数表示阿咪东索中第 ii 片牧场的羊的数量,每个数最大为 ww。

接下来的 mm 行描述了这些牧场之间的所有路径,每行包含两个整数 uu 和 vv,表示第 uu 片牧场和第 vv 片牧场之间的一条路径,满足 1≤u,v≤n1 \le u, v \le n,u≠vu \ne v,并且我们保证第 uu 片牧场的海拔严格高于第 vv 片牧场的海拔,且任意两片牧场之间至多有一条路径。

尽管输入没有给出所有牧场的精确海拔,但我们保证它们确实存在,且在一个测试数据中给出的所有路径不会产生歧义。此外,对于任意一对牧场,由于路线中涉及的牧场的海拔受限,冒险者可能无法从较高的牧场游览到较低的牧场。即使某些路径允许从低海拔通向高海拔,该路线也可能不被允许。

输出格式

对于每组测试数据,输出一行包含 “Case #x:”(不含引号)以及接下来的 3w3w 个整数,其中 xx 是测试数据的编号(从 11 开始),接下来的第 ii 个整数表示对于 k=ik = i 时,上述不同计划的数量模 (109+7)(10^9 + 7) 的结果。为了在输出中分隔这些不同计划的数量,在每个数前插入一个空格。

2
4 3 4
1 2 3 4
1 2
1 3
1 4
4 6 4
1 2 3 4
1 2
1 3
1 4
2 3
2 4
3 4
Case #1: 0 0 0 0 0 1 1 1 1 0 0 0
Case #2: 0 0 0 0 0 2 5 9 16 11 13 4

提示

在第一个样例中,所有可行计划的出发点都是同一片牧场(即第一片牧场),从第一片牧场出发的不同路线有 11、1→21 \to 2、1→31 \to 3 和 1→41 \to 4。

翻译由 DeepSeek V4 Pro 完成