Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:512 MB

#2803. c

统计

题目描述

给你一棵 n 个点带点权的树,第 i 个点的点权为 vi

定义有向路径 se 的权值的计算方法为:

  • 设从 se 的路径经过的点的点权分别为 z0,1,,l,则该条路径的权值为 (z0k0+z1k1++zlkl)mody,记为 t(se)

另给定常数 r,定义函数 f(x)=[x=r]。现在让你求满足以下条件的三元组 (p1,p2,p3) 的个数:(三个点可以相同)

  • f(t(p1p2))=f(t(p1p3))=f(t(p2p2))

输入格式

第一行四个整数 n,y,k,r

接下来一行 个数代表每个点的点权。

接下来 n1 行每行两个数代表树上一条边。

输出格式

输出一行代表答案。

样例 #1

样例输入 #1

3 5 2 1
4 3 1
1 2
2 3

样例输出 #1

14

样例 #2

见下发样例

提示

对于 10% 的数据,n10

对于 25% 的数据,n100

对于 40% 的数据,n10000

对于另外 15% 的数据,树退化为一条链。

对于另外 15% 的数据,k=1

对于 100% 的数据,1n105,2y109,1k<y,0r,vi<y ,保证 y 是质数。