#HK5126. 「RMI 2018」Traffickers

「RMI 2018」Traffickers

题目描述

题目译自 Romanian Master of Informatics 2018 Day1 T3 「Traffickers

在狂野西部,帕布罗是最臭名昭著的人物之一,他控制着 NN 个通过道路连接成树状结构的城市。他的心腹手下是贩运者,日夜不停地运输货物。每名贩运者由一对城市 (u,v)(u, v) 定义:从时间 00 开始,贩运者从城市 uu 沿最短路径前往城市 vv。在每个整数时间点,贩运者交付 11 单位货物,然后移动到下一个城市。

帕布罗的贩运者难以追踪:一旦一名贩运者到达目标城市 vv 并交付货物,在下一时间点,他会瞬间传送回城市 uu(如果他在时间 tt 在城市 vv 交付货物,那么在时间 t+1t + 1 他将在城市 uu 交付)。由于生意兴隆,帕布罗希望永不停止,贩运者将永远按照他们的路线行动。

尽管帕布罗的系统看似无懈可击,你还是想知道是否能进一步优化。因此,你将对系统执行以下 33 种查询:

  • 1 u v1\ u\ v:添加一名在城市 (u,v)(u, v) 间运输的贩运者。
  • 2 u v2\ u\ v:移除一名在城市 (u,v)(u, v) 间运输的贩运者。保证这样的贩运者存在。
  • 3 u v t1 t23\ u\ v\ t_1\ t_2:你想知道在时间 t1t_1t2t_2(包含)内,所有现有贩运者在城市 uuvv 最短路径上(包含两端城市)交付的货物单位总数。

输入格式

第一行包含一个整数 NN,表示城市数量。接下来的 N1N - 1 行每行包含两个整数 u,vu, v,表示城市 uuvv 之间有一条直接道路。

下一行包含一个整数 KK,表示帕布罗网络中初始的贩运者数量。接下来的 KK 行每行包含两个整数 u,vu, v,表示一名贩运者的路径城市对。

下一行包含一个整数 QQ,表示你打算执行的查询数量。接下来的 QQ 行每行包含一个查询,格式如上所述。

输出格式

对于每种类型 33 的查询,在单独的一行输出答案。

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

2
10

在样例中,第一个查询(类型 33)询问在时间 0033 内,城市 3355 的最短路径(路径为 32153-2-1-5)上交付的货物总量。初始只有一名贩运者从城市 4411,他在时间 11 在城市 22 交付 11 单位货物,时间 22 在城市 11 交付 11 单位货物,总计 22 单位。

第二个查询(类型 11)添加一名从城市 2255 的贩运者。

第三个查询(类型 33)询问在时间 1155 内,城市 4455 的最短路径(路径为 42154-2-1-5)上交付的货物总量。两名贩运者的交付情况导致总计 1010 单位货物。

数据范围与提示

对于所有输入数据,满足:

  • 1N300001 \leq N \leq 30000
  • 0K500000 \leq K \leq 50000
  • 1Q500001 \leq Q \leq 50000
  • 0t1t220000000000 \leq t_1 \leq t_2 \leq 2000000000
  • 每名贩运者的路径最多覆盖 2020 个城市(包括端点)

每个测试点将单独评分。

子任务 分值 附加限制
11 1515 N1000N \leq 1000K,Q500K, Q \leq 5000t1t2100 \leq t_1 \leq t_2 \leq 10
22 4545 N10000N \leq 10000K,Q5000K, Q \leq 5000
33 4040 无附加限制