#SLT01D. 2026年S组模拟赛10连测第1场-T4 接力巡山
2026年S组模拟赛10连测第1场-T4 接力巡山
| 项目 | 内容 |
|---|---|
| 输入文件名 | trek.in |
| 输出文件名 | trek.out |
| 可执行文件名 | trek |
| 每个测试点时限 | 1.0 秒 |
| 内存限制 | 512 MiB |
| 测试点数目 | 20 |
| 是否等分 | 是 |
结果比较方式为全文比较(过滤行末空格及文末换行)。
题目描述
某林场沿山设有 个哨所,编号 到 ,其中 号为总指挥部。除总指挥部外,每个哨所有唯一上级; 号哨所()的上级编号为 ,两者之间由一条长度为 的林间道路直接相连。从任意哨所出发,沿上级关系逐级上行,有限步内必能到达总指挥部。
部分哨所设有补给站,1 号总指挥部必设补给站。巡护员的回撤任务规定如下:从哨所 出发,沿上级链逐级回撤至哨所 (保证 在 的上级链上且 ),全程须划分为若干段;每段连续行进的距离不得超过 (全场统一给定),且除出发点 与终点 外,中途只可在补给站落脚——即每一段的两端必须是补给站、 或 。
请你为每次任务求出完成回撤所需的最少段数;若按规程无论如何都无法完成回撤,输出 。
输入格式
从文件 trek.in 中读入数据。
- 第一行三个整数 ;
- 第二行 个整数 ,其中 表示 号哨所的上级编号;
- 第三行 个整数 ,其中 表示 号哨所到其上级的道路长度;
- 第四行 个整数 , 表示 号哨所设有补给站, 表示未设;
- 接下来 行,每行两个整数 ,表示一次从 回撤到 的任务。
输出格式
输出到文件 trek.out 中。
输出 行,每行一个整数,表示对应任务的最少段数;无法完成时输出 。
样例
6 4 5
1 2 3 4 5
3 2 4 1 2
1 0 1 0 1 0
6 4
6 2
5 3
4 1
1
3
1
2
7 4 5
1 1 2 2 3 3
2 3 2 4 7 1
1 1 0 1 0 0 0
5 1
6 1
7 3
4 2
2
-1
1
1
样例 2 解释
第一次任务从 号回撤到 号: 到 的距离为 ,超过 ,必须分段。 与 之间的补给站只有 号;按 行进,两段距离分别为 与 ,均不超过 ,共 段。第二次任务从 号回撤到 号:路径经过 号,而 号未设补给站, 到 的距离为 ;中途没有可落脚的地点,一段最多行进 ,无论如何划分都会有某一段超过 ,输出 。
7 3 4
1 2 3 4 5 6
1 1 1 1 1 1
1 0 1 0 1 0 0
7 1
6 3
7 2
2
1
2
数据范围
对于所有测试数据,保证:
- ,;
- 且 ,从任意哨所沿上级链有限步内必能到达 号;
- ;
- ,且 ;
- 每次任务保证 在 的上级链上且 。
各测试点的约束如下:
| 测试点 | 特殊性质 | ||
|---|---|---|---|
| 无 | |||
| A | |||
| B | |||
| 无 | |||
- 特殊性质 A:对每个 ,都有 。
- 特殊性质 B:对每个 ,都有 。
难度
未评定
通过率
0%
尝试
3
通过
0
- ID
- 3772
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者