#P7126. [Ynoi2008] rdCcot

[Ynoi2008] rdCcot

题目描述

给一棵边权为 11 的树和一个常数 CC,节点用 11 到 nn 的整数表示。

定义 dist(a,b)dist(a,b) 为节点 a,ba,b 在树上的距离,即 aa 到 bb 的简单路径上的边权和,特别地,dist(a,a)=0dist(a,a) = 0。

每次查询的时候给出一个区间 [l,r][l,r],查询有多少个 C-块,定义如下:

对任意两个节点 a,ba,b,定义 a,ba,b 是 C-连通的,当且仅当存在一个长为 tt 的节点序列 {vi}\{v_i\},满足:

  1. v1=av_1=a
  2. vt=bv_t=b
  3. 对任意 1≤i≤t−11\le i\le t-1,dist(vi,vi+1)≤Cdist(v_i,v_{i+1})\le C
  4. 对任意 1≤i≤t1\le i\le t,l≤vi≤rl\le v_i\le r

定义“C-块”为一个点集 SS,满足:

  1. 对任意 aa 属于 SS,bb 属于 SS 的补集,a,ba,b 不 C-连通
  2. 对任意 a,ba,b 属于 SS,aa 和 bb C-连通
  3. 对任意 aa 属于 SS,有 l≤a≤rl\le a \le r

输入格式

第一行三个数 nn,mm,CC 依次表示树的节点个数,询问次数,还有常数 CC;

第二行共 n−1n-1 个数 p2  p3  …  pnp_2\;p_3\;\dots\;p_n,表示对于 2≤i≤n2 \le i\le n 的整数 ii,ii 和 pip_i 之间有一条无向边;

保证输入的数据构成一棵树;

之后 mm 行,每行两个数 l    rl\;\;r,表示这次询问的区间是 [l,r][l,r],保证 l≤rl \le r;

保证 1≤n≤3⋅105,1≤m≤6⋅1051 \le n\le 3\cdot 10^5,1 \le m\le 6\cdot 10^5。

输出格式

共 mm 行,依次回答各组询问:每行输出一行一个整数表示这组询问的答案。

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

提示

Idea:nzhtl1477,Solution:ccz181078,Code:nzhtl1477&ccz181078,Data:ccz181078

本题有多个子任务,每个子任务可能包含多个测试点,只有通过了一个子任务中的所有测试点才能得到该子任务的分数。

每个子任务的测试点满足一些特殊的限制,具体如下表:

子任务 分数 nn mm CC 性质1 性质2
1 1 4 4 100 100 10 10 否
2 2 300000 300000 600000 600000 299999 299999 ^ ^
3 3 16 16 ^ 299900 299900
4 4 1 1
5 5 8 8 2 2
6 6 3 3
7 7 4 4
8 8 100000 100000 300000 300000 是
9 9 4 4 300000 300000 600000 600000 ^
10 10 8 8 300000 300000 ≤300000 \leq 300000 否 是
11 11 4 4 ^ ^ 是 ^
12 12 8 8 100000 100000 200000 200000 否
13 13 200000 200000 400000 400000 ^
14 14 300000 300000 600000 600000

其中,性质1、性质2的含义如下:

性质1:存在一个点 ww 使得 dist(1,w)=n−1dist(1,w)=n-1;

性质2:n=mn=m,且第 ii 次询问为 l=1,  r=il=1,\;r=i。