#P11209. [thusc 2018]史莱姆之友
[thusc 2018]史莱姆之友
题目描述
小 R 最近沉迷于一款游戏。在游戏中,小 R 的任务是捕捉一些史莱姆。游戏的地图上有 座城堡,编号为 到 。有 条无向边,每条边连接两座城堡,任意两座城堡之间都连通。即这 座城堡构成一棵树。在每一座城堡中都有一些红色史莱姆和绿色史莱姆,编号为 的城堡有 只互不相同的红色史莱姆和 只互不相同的绿色史莱姆。小 R 从 号城堡出发,当他经过一座城堡(包括 号城堡)时,他会捕捉这座城堡中的任意一只史莱姆(即任意一只红色史莱姆或任意一只绿色史莱姆,不能一只都不捕捉,也不能捕捉超过一只),然后沿着一条边走向一座之前没有经过的城堡,如果不存在没有经过的城堡,则游戏结束。即如果把 号城堡作为根,小 R 经过的路径一定是一条从根到某一个叶子节点的链,并且他会在每一个经过的城堡捕捉正好一只史莱姆。
小 R 希望捕捉正好 只绿色史莱姆(不能多也不能少),他想知道有多少种不同的方案。方案 A 和方案 B 相同当且仅当方案 A 中捕捉的史莱姆与方案 B 中捕捉的史莱姆完全相同。需要注意的是地图上任意两只史莱姆都是互不相同的。由于他还没有想好 的具体值,所以你需要同时输出 的答案。由于答案可能很大,你只需要输出答案模 的值。
输入格式
第一行一个正整数 和一个字符串 ,分别表示城堡的数量和数据的类型。 字符串是为了能让大家更方便地获得部分分,你可能不需要用到这个输入。其具体含义在【子任务】中有解释。
第二行 个正整数,第 个正整数表示 ,即 号城堡中红色史莱姆的数量。保证 。
第三行 个正整数,第 个正整数表示 ,即 号城堡中绿色史莱姆的数量。保证 。
接下来 行每行两个正整数 ,表示 之间有一条边。数据保证输入的边构成一棵树。
输出格式
输出 行,分别表示 的答案。
4 A1
3 2 2 1
2 4 1 3
1 2
1 3
3 4
12
41
31
6
0
样例解释 1
小 R 有 种路线,分别是 和 。因为在每个经过的城堡都至少要捕捉一只史莱姆,所以两种路线对应的方案一定是两两不同的。假设选择路线 ,若,则需在 号城堡和 号城堡都需捕捉红色史莱姆,因为这两座城堡分别有3只和2只不同的红色史莱姆,所以方案数为 。若 ,则可以在 捉红的在 捉绿,或在 捉绿的在 捉红的,方案数为。 的方案数为 。同理如果选择路线 , 的方案数为 。所以最终的答案为 。
子任务
本题共有 20 个测试点,每个测试点 5 分。各测试点约定如下:
["测试点编号", "$n$", "type"],
[r"1","$\le 5$","A1"],
[r"2$\sim$3", "$\le 2000$", "D1"],
[r"4", r"$\le 10^5$","B0"],
[r"5$\sim$7", r"$\le 10^5$","C0"],
[r"8$\sim$11", r"$\le 10^5$","D0"],
[r"12$\sim$14", r"$\le 10^5$","B1"],
[r"15$\sim$17", r"$\le 10^5$","C1"],
[r"18$\sim$20", r"$\le 10^5$","D1"],
数据类型的含义:
A:
B:
C:
D:无限制
0:一条链( 号城堡与 号城堡相连)
1:无限制