#P13805. [CERC 2022] Bandits

[CERC 2022] Bandits

Description

有一个王国,包含 NN 个村庄和 N1N - 1 条双向道路。公民可以通过这些道路沿路径(由一条或多条道路组成)在任意两个村庄之间往来。第 ii 条道路连接村庄 AiA_iBiB_i,长度为 CiC_i

国王注意到,关于土匪袭击在道路上行商的商人的投诉越来越多。他命令顾问解决这一问题,方法是雇佣忠诚的打手团伙,充当安保机构。每一份安保合同保证从总部所在村庄 XjX_j 出发,半径 RjR_j 内的所有道路得到保护。一条道路会被视为受该合同保护,当且仅当它属于从 XjX_j 出发、长度不超过 RjR_j 的某条路径的一部分。某些道路可能被多份合同保护,因此会更加安全。

请编写程序,处理关于新合同的查询,并回答针对特定道路的安全性查询,即输出当前保护该道路的合同数量。

Input Format

第一行包含一个整数 NN,表示村庄的数量。接下来的 N1N - 1 行描述这些道路。每行包含三个整数 Ai,Bi,CiA_i, B_i, C_i,表示一条连接村庄 AiA_iBiB_i 的道路,其长度为 CiC_i。村庄编号为 1N1 \sim N

下一行包含一个整数 QQ,表示查询数量。接下来的 QQ 行依次描述这些查询。

  • 表示新安保合同的查询以字符 '+' 开头,随后给出总部村庄 XjX_j 与安全半径 RjR_j
  • 表示道路安全性的查询以字符 '?' 开头,随后给出道路编号 YjY_j。道路编号为 1N11 \sim N - 1,编号顺序即为输入时的顺序。

Output Format

按照给定顺序处理查询。对于每一个 '?' 类型的查询,输出一行,包含当前保护道路 YjY_j 的合同数量。

7
1 2 4
4 2 7
5 1 3
3 6 4
1 6 9
2 7 1
7
+ 2 6
? 3
? 1
+ 6 14
? 1
? 2
? 3
0
1
2
0
1

Hint

输入限制

  • 1N,Q1051 \leq N, Q \leq 10^5
  • 0Ci,Rj1090 \leq C_i, R_j \leq 10^9

翻译由 ChatGPT-5 完成