#P5384. [Cnoi2019] 雪松果树

    ID: 5659 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 显示难度提高+/省选− 上传者: 标签>2019O2优化深度优先搜索 DFS差分

[Cnoi2019] 雪松果树

背景

幻想乡,冬。

一年一度,生长在高山上的雪松果树又结果了。

Cirno 不知从哪弄到了 1,2,3⋯91,2,3\cdots9 颗雪松果,然后很开心的吃掉了其中 66 颗,最后还剩最后 11 颗。

Cirno 因为以后吃不到雪松果而感到忧愁,于是决定种在美丽的雾之湖畔。

第一天,发芽。

第二天,雪松果树长成了一颗参天大树,上面长满了雪松果。

Cirno 在雪松果成熟之前早有一些问题想知道,但现在她忙于收集雪松果,就把问题丢给了你。

题目描述

雪松果树是一个以 11 为根有着 NN 个节点的树。

除此之外,Cirno 还有 QQ 个询问,每个询问是一个二元组 (u,k)(u,k),表示询问 uu 节点的 kk-cousin 有多少个。

我们定义:

节点 uu 的 11-father 为 路径 (1,u)(1, u) (不含 u)上距 u 最近的节点

节点 uu 的 kk-father 为 节点 「uu 的 (k−1)(k-1)-father」 的 1-father

节点 uu 的 kk-son 为所有 kk-father 为 uu 的节点

节点 uu 的 kk-cousin 为 节点「 uu 的 kk-father」的 kk-son (不包含 uu 本身)

输入格式

第一行,两个整数 NN, QQ

第二行,N−1N-1 个整数,第 ii 个表示 i+1i+1 号节点的 1-father

以下 QQ 行,每行一个二元组(u,k)(u,k)

输出格式

一行,QQ 个数,每一个表示一个询问的答案。若 u 不存在 k-father,输出 0。

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

提示

数据范围: |数据点编号|N≤N\le|Q≤Q\le|特殊性质| |----|----|----|-----| |1,2|100100|100100|| |3,4|100100|10610^6|| |5,6|10510^5|100100|| |7|10410^4|50005000|| |8,9,10|10510^5|10510^5|| |11,12,13,14|10610^6|10610^6|树随机生成| |15,16,17,18,19,20|10610^6|10610^6||

另外存在一组记 2020 分的 hack 数据。