#SLT01D. 2026年S组模拟赛10连测第1场-T4 接力巡山

2026年S组模拟赛10连测第1场-T4 接力巡山

项目 内容
输入文件名 trek.in
输出文件名 trek.out
可执行文件名 trek
每个测试点时限 1.0 秒
内存限制 512 MiB
测试点数目 20
是否等分 是

结果比较方式为全文比较(过滤行末空格及文末换行)。

题目描述

某林场沿山设有 nn 个哨所,编号 11 到 nn,其中 11 号为总指挥部。除总指挥部外,每个哨所有唯一上级;ii 号哨所(i≥2i \ge 2)的上级编号为 pip_i,两者之间由一条长度为 wiw_i 的林间道路直接相连。从任意哨所出发,沿上级关系逐级上行,有限步内必能到达总指挥部。

部分哨所设有补给站,1 号总指挥部必设补给站。巡护员的回撤任务规定如下:从哨所 uu 出发,沿上级链逐级回撤至哨所 vv(保证 vv 在 uu 的上级链上且 v≠uv \ne u),全程须划分为若干段;每段连续行进的距离不得超过 LL(全场统一给定),且除出发点 uu 与终点 vv 外,中途只可在补给站落脚——即每一段的两端必须是补给站、uu 或 vv。

请你为每次任务求出完成回撤所需的最少段数;若按规程无论如何都无法完成回撤,输出 −1-1。

输入格式

从文件 trek.in 中读入数据。

  • 第一行三个整数 n,q,Ln, q, L;
  • 第二行 n−1n-1 个整数 p2,p3,…,pnp_2, p_3, \dots, p_n,其中 pip_i 表示 ii 号哨所的上级编号;
  • 第三行 n−1n-1 个整数 w2,w3,…,wnw_2, w_3, \dots, w_n,其中 wiw_i 表示 ii 号哨所到其上级的道路长度;
  • 第四行 nn 个整数 s1,s2,…,sns_1, s_2, \dots, s_n,si=1s_i = 1 表示 ii 号哨所设有补给站,si=0s_i = 0 表示未设;
  • 接下来 qq 行,每行两个整数 u,vu, v,表示一次从 uu 回撤到 vv 的任务。

输出格式

输出到文件 trek.out 中。

输出 qq 行,每行一个整数,表示对应任务的最少段数;无法完成时输出 −1-1。

样例

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 解释

第一次任务从 55 号回撤到 11 号:55 到 11 的距离为 4+2=64+2=6,超过 L=5L=5,必须分段。55 与 11 之间的补给站只有 22 号;按 5→2→15 \to 2 \to 1 行进,两段距离分别为 44 与 22,均不超过 55,共 22 段。第二次任务从 66 号回撤到 11 号:路径经过 33 号,而 33 号未设补给站,66 到 11 的距离为 7+3=107+3=10;中途没有可落脚的地点,一段最多行进 55,无论如何划分都会有某一段超过 55,输出 −1-1。

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

数据范围

对于所有测试数据,保证:

  • 1≤n,q≤1051 \le n, q \le 10^5,1≤L≤10141 \le L \le 10^{14};
  • 1≤pi≤n1 \le p_i \le n 且 pi≠ip_i \ne i,从任意哨所沿上级链有限步内必能到达 11 号;
  • 1≤wi≤1091 \le w_i \le 10^9;
  • si∈{0,1}s_i \in \{0, 1\},且 s1=1s_1 = 1;
  • 每次任务保证 vv 在 uu 的上级链上且 v≠uv \ne u。

各测试点的约束如下:

测试点 nn qq 特殊性质
1∼31\sim3 ≤300\le 300 无
4∼74\sim7 ≤2000\le 2000
8∼118\sim11 ≤105\le 10^5 A
12∼1512\sim15 B
16∼2016\sim20 无
  • 特殊性质 A:对每个 i≥2i \ge 2,都有 pi=i−1p_i = i - 1。
  • 特殊性质 B:对每个 ii,都有 si=1s_i = 1。
难度 未评定
通过率 0%
尝试 3
通过 0
ID
3772
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者