时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小

有一颗

个结点的树 ,结点的编号为

, 结点
)
的点权为

。
小

现在给定了一个正整数

,他希望你告诉他树上有多少个这样的二元组
)
, 满足

且

到

的最短路径上的点权恰好是一个

的排列。
输入描述:
第一行,包含两个整数
和
。
第二行,共
个整数
,表示每个结点的点权。
接下来的
行,每行包含两个整数
,代表结点
和结点
之间有一条边相连。
输出描述:
输出一行,包含一个整数,如题意所示。
示例1
输入
复制
5 2
1 2 1 2 5
1 2
2 3
3 4
4 5
示例2
输入
复制
5 3
1 2 2 2 3
1 2
2 3
3 4
4 5