#SXLK2022B. 填树

填树

题目描述

有一棵 nn 个节点的无根树,刚开始树上每个节点的权值均为 00。KK 想对这棵树进行一些修改,他会任选一个节点作为初始的当前节点,然后重复以下动作:

  1. 将当前节点 ii 的权值修改为一个正整数 xx,需满足 lixril_i \leq x \leq r_i。其中 li,ril_i, r_i 是输入中给出的两个正整数。
  2. 结束修改过程,或移动到一个与当前节点相邻的权值为 00 的节点(如果不存在这样的节点,则必须结束修改过程)。

现在 KK 有两个问题:

  1. 在修改结束后,可以得到多少棵不同的树,满足树上非零权值的最大值和最小值的差小于等于 KK?其中 KK 是输入中给出的一个正整数。

  2. 这些满足条件的树的权值之和为多少?(树的权值定义为这棵树上所有节点的权值之和)

你需要输出这两个问题的答案模 109+710^9 + 7。我们认为两棵树不同当且仅当至少存在一个节点的权值不同。

温馨提示:

  1. KK 至少会修改一个节点(初始节点)。
  2. 实质上 KK 会修改树上的任意一条路径,最后需要满足这条路径上的点的权值最大值和最小值之差小于等于 KK

输入格式

第一行两个正整数 n,Kn, K,表示节点数和权值差的最大值。

接下来 nn 行,每行两个正整数 li,ril_i, r_i,表示第 ii 个节点修改后权值的最小值和最大值。

接下来 n1n - 1 行,每行两个正整数 ui,viu_i, v_i,表示节点 uiu_iviv_i 之间有一条边。数据保证形成一棵树。

输出格式

输出两行,每行一个整数,分别表示第一问和第二问的答案模 109+710^9 + 7 的值。

注意,如果你不打算回答第二问,请在第二行任意输出一个整数。如果输出文件只有一行,则会因格式不符合要求被判 00 分。

3 1
2 3
3 5
4 6
1 2
1 3
14
78

样例 1 解释

11 22 33 44 55 66 77 88 99 1010 1111 1212 1313 1414
节点 11 22 33 22 33 33 33 00 00
节点 22 00 33 44 00 44 33 44 55
节点 33 00 44 44 00 44 55 66

表格中列出了全部 1414 棵满足条件的树,将这些树的权值加起来为 7878

样例 2 和样例 3 见附件。

数据范围

对于 100%100\% 的数据,1n2001 \leq n \leq 2001liri1091 \leq l_i \leq r_i \leq {10}^91K1091 \leq K \leq {10}^9

测试点 nn \leq ri,Kr_i, K \leq 其他限制
11 55 1010
22 3030 10910^9
33
44 500500
55 200200 200000200000
66
77 10910^9 A
88
99
1010

特殊限制 A:所有点构成一条链, 编号为 ii 的点和编号为 i+1i + 1 的点之间有连边

【评分方式】

本题共 1010 个测试点,每个测试点 1010 分。其中回答正确第一问可得 77 分,回答正确第二问可得 33 分。