Description
给定一颗n个结点的无根树,树上的每个点有一个非负整数点权,定义一条路径的价值为路径上的点权和-路径的点权最大值。
给定参数p,我们想知道,有多少不同的树上简单路径,满足它的价值恰好是p的倍数。
注意:单点算作一个路径;u ≠ v时,(u,v)和(v,u)只算一次。
Input
第一行包含两个整数n,p;
接下来n-1行,每行两个整数u,v,表示一条树边。
接下来一行n个整数,第i个整数val_i,表示点i的权值。
Output
输出包含一行一个整数,表示答案
Sample Input
5 2
1 2
1 3
2 4
3 5
1 3 3 1 2
Sample Output
9
满足条件的路径有:(1,1),(2,2),(3,3),(4,4),(5,5),(1,4),(2,3),(2,5),(3,5)。
Hint
【数据范围与约定】
对所有测试点,我们有: n≤10^5,p≤10^7,val_i≤10^9
这是点分治求倍数的板子,对我来说真是一道好题= =
错点1:注意模运算的余数的意义
错点2