#P12516. [OOI 2023 Day 1]汽油价格

[OOI 2023 Day 1]汽油价格

题目描述

伯利兰迪亚是一个庞大的国家,包含 nn 个城市。伯利兰迪亚的道路网络可以看作一棵有根树,总共有 n1n - 1 条道路,从任意城市到另一城市有且仅有一条路径,且不会重复经过同一城市。为了便于描述国家结构,对于每个城市 ii,固定了一个城市 pip_i,表示从城市 ii 前往城市 11 时需要首先到达的城市。换句话说,如果将树以城市 11 为根,pip_i 即为城市 ii 的直接父节点。

伯利兰迪亚的每个城市都有一座加油站。这些加油站的定价方式很特别,每座加油站都有一个固定的价格范围,愿意在这个范围内销售汽油。城市 ii 的加油站愿意以任何价格从 lil_irir_i(包含边界)出售汽油。

伯利兰迪亚的国王是个模范的家庭人,在 mm 年内,他每年都会有两个儿子出生。国王的孩子从小就参与国家事务,每年年底他们会检查汽油价格的公平性。从出生开始,在第 ii 年出生的国王孩子分别负责检查从城市 aia_i 到城市 bib_i 和从城市 cic_i 到城市 did_i 的路径上的汽油价格。

检查过程如下:两个孩子同时分别从城市 aia_icic_i 开始他们的旅程。第 ii 年出生的第一个儿子沿着从城市 aia_i 到城市 bib_i 的路径前进,第二个儿子沿着从城市 cic_i 到城市 did_i 的路径前进。他们会检查城市 aia_i 的汽油价格是否与城市 cic_i 的价格一致;接着检查从 aia_ibib_i 路径上的第二个城市与从 cic_idid_i 路径上的第二个城市的汽油价格是否一致;以此类推,直到检查城市 bib_idid_i 的价格是否一致。保证从城市 aia_ibib_i 的路径长度与从城市 cic_idid_i 的路径长度相等。

加油站必须严格遵守法律,因此所有汽油价格的检查都不能发现违规行为。请帮助伯利兰迪亚的加油站计算,在 mm 年内他们有多少种方式可以设定汽油价格。换句话说,对于从 11mm 的每个 ii,计算在所有加油站设定汽油价格的方式数量,使得在第 ii 年及之前的孩子们进行检查时没有发现违规,并且每个加油站的价格都在其允许范围内。由于方式数量可能很大,请将答案对 109+710^{9} + 7 取模。

输入格式

第一行包含一个整数 nn (1n200000)(1 \le n \le 200000),表示伯利兰迪亚的城市数量。

第二行包含 n1n - 1 个整数 p2,p3,p4,,pnp_2, p_3, p_4, \ldots, p_n (1pin)(1 \le p_i \le n),其中 pip_i 表示从城市 ii 到城市 11 路径上的下一个城市。

接下来的 nn 行,每行包含两个整数 lil_irir_i (1liri<109+7)(1 \le l_i \le r_i < 10^{9}+7),定义第 ii 号加油站的允许价格范围。

接下来的一行包含一个整数 mm (1m200000)(1 \le m \le 200000),表示国王有孩子出生的年数。

接下来的 mm 行,每行包含四个整数 ai,bi,ci,dia_i, b_i, c_i, d_i (1ai,bi,ci,din)(1 \le a_i, b_i, c_i, d_i \le n),定义第 ii 年出生的国王孩子将检查的两个路径。保证从城市 aia_ibib_i 的路径长度等于从城市 cic_idid_i 的路径长度。

输出格式

输出 mm 行,每行一个数字。第 ii 行的数字应等于在所有城市设定汽油价格的方式数量,使得第 ii 年及之前出生的国王孩子在检查时未发现违规。答案请对 109+710^{9} + 7 取模。

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

18
18
4
0

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

720
120
120
1

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 子任务依赖 备注
11 1212 n300n \leq 300, m300m \leq 300 00
22 1010 n3000n \leq 3000, m3000m \leq 3000 pi=i1p_i = i - 1
33 99 0,1,20, 1, 2
44 1616 030 \sim 3 所有检查路径的总长度不超过 10810^{8}
55 1010 n100000n \leq 100000, m100000m \leq 100000 22 pi=i1p_i = i - 1
66 1212 2,52, 5
77 1313 n100000n \leq 100000, m100000m \leq 100000 03,50 \sim 3, 5
88 1818 070 \sim 7