#L4082. 「ROI 2023 Day2」山坡上的蜗牛
「ROI 2023 Day2」山坡上的蜗牛
题目描述
译自 ROI 2023 Day2 T1. Улитка на склоне
一只蜗牛悄悄地爬上了富士山的山顶,它想要下山。在山坡上有一些小路,形成了一个悬挂的二叉树。
树中有 个节点,用 条小路连接。山顶是树的根节点(编号为 )。在一些节点上,小路走到了尽头,它们是树的叶子节点。对于每个非叶子节点,都有两条小路向下延伸:一条向左,一条向右。
蜗牛想要从根节点开始沿着树下滑,直到到达一个叶子节点。它会沿着小路向下移动。在每个节点处,蜗牛可以选向左下滑或者向右下滑。蜗牛可以在根节点处选择任意一个方向开始下滑。在每个非根节点处,如果蜗牛选择的方向与前一个节点处的方向不同,那么它就会转弯。蜗牛不喜欢转弯,所以在从根节点到叶子节点的整个路径上,蜗牛最多愿意转弯 次。
给定树中节点的编号为 到 ,其中根节点的编号为 。给你 个查询。每个查询给出了一个节点 ,你需要求出如果蜗牛从根节点开始下滑最多转弯 次,并且在路径上经过节点 ,它能在多少个叶子节点处结束下滑。
输入格式
第一行包含三个整数 (,,),分别表示树中的节点数、蜗牛愿意转弯的最大次数、查询的数量。
接下来的 行中给出了树的形态。第 行包含一个整数 ,表示从第 个节点出发的小路的数量( 或 )。如果 ,那么在同一行中,接下来给出两个整数 (),分别表示从第 个节点出发的左边和右边的小路所通向的节点的编号。保证这个描述符合一个以第 个节点为根的悬挂二叉树。
接下来的 行中给出了查询。第 行包含一个整数 (),表示蜗牛在其路径上必须经过的节点的编号。
输出格式
对于每个查询,输出一行一个整数,表示如果蜗牛从根节点开始下滑最多转弯 次,并且在路径上经过节点 ,它能在多少个叶子节点处结束下滑。
样例
输入
7 1 4
2 2 4
0
2 6 5
2 3 7
0
0
0
1
4
3
5
输出
3
2
1
0
样例说明
这是样例中的树的形态。
- 蜗牛必须经过 号节点,它能在 号节点处结束下滑。
- 蜗牛必须经过 号节点,它能在 号节点处结束下滑。
- 蜗牛必须经过 号节点,它能在 号节点处结束下滑。
- 蜗牛必须经过 号节点,但是到达这个节点的路径已经包含了超过一个的转弯。因此,满足条件的叶子节点不存在。
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务编号 | 分值 | 附加限制 | 子任务依赖 |
|---|---|---|---|
| 1 | 11 | ,;在所有查询中, 都是叶子节点 | 无 |
| 2 | 12 | , | 0, 1 |
| 3 | 10 | 无 | |
| 4 | 14 | ||
| 5 | 19 | 在所有查询中, 都是叶子节点 | 1 |
| 6 | 34 | 无附加限制 | 0, 1~5 |