#P0403. 树的连通子图

树的连通子图

题目描述

给定一个包含 nn 个节点的树。节点编号从 11nn,编号为 i(1in)i(1 \le i \le n) 的节点的权值为 aia_i

你需要计算这棵树存在多少个 连通子图 满足如下条件:

该连通子图所包含的节点权值的最大值和最小值只差不超过 dd

由于满足条件的连通子图个数比较大,所以你只需要输出满足条件的连通子图个数模 109+710^9+7 的结果即可。

输入格式

第一行,两个整数 d(0d2000)d(0 \le d \le 2000)n(1n2000)n(1 \le n \le 2000),以一个空格分隔。

第二行,nn 个整数 a1,a2,,an(1ai2000)a_1, a_2, \ldots, a_n(1 \le a_i \le 2000)

接下来 n1n-1 行,每行包含两个整数 uuvv1u,vn,uv1 \le u,v \le n, u \neq v),表示树上一条边对应的两个节点编号。

输出格式

输出满足条件的连通子图个数模 109+710^9+7 的结果。

样例输入1

1 4
2 1 3 2
1 2
1 3
3 4

样例输出1

8

样例输入2

0 3
1 2 3
1 2
2 3

样例输出2

3

样例输入3

4 8
7 8 7 5 4 6 4 10
1 6
1 2
5 8
1 3
3 5
6 7
3 4

样例输出3

41

说明/提示

样例 1 解释

一共有 88 个满足条件的连通子图,对应的节点集合分别为:

  • {1}\{ 1 \}
  • {2}\{ 2 \}
  • {3}\{ 3 \}
  • {4}\{ 4 \}
  • {1,2}\{ 1, 2 \}
  • {1,3}\{ 1, 3 \}
  • {3,4}\{ 3, 4 \}
  • {1,3,4}\{ 1, 3, 4 \}

数据规模与约定

  • 对于 30%30\% 的数据,n,d,ai20n,d,a_i \le 20
  • 对于 60%60\% 的数据,n,d,ai200n,d,a_i \le 200
  • 对于 100%100\% 的数据,1n,ai2000,0d20001 \le n,a_i \le 2000, 0 \le d \le 2000