#P14531. [RMI 2018] 贩运 / Traffickers

    ID: 16409 远端评测题 3500ms 512MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>2018树状数组最近公共祖先 LCARMI(罗马尼亚)

[RMI 2018] 贩运 / Traffickers

背景

翻译来自于 LibreOJ。

题目描述

题目译自 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_1 到 t2t_2(包含)内,所有现有贩运者在城市 uu 到 vv 最短路径上(包含两端城市)交付的货物单位总数。

输入格式

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

下一行包含一个整数 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

提示

样例 1 解释

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

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

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

数据范围

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

  • 1≤N≤300001 \leq N \leq 30000
  • 0≤K≤500000 \leq K \leq 50000
  • 1≤Q≤500001 \leq Q \leq 50000
  • 0≤t1≤t2≤20000000000 \leq t_1 \leq t_2 \leq 2000000000
  • 每名贩运者的路径最多覆盖 2020 个城市(包括端点)

每个测试点将单独评分。

子任务 分值 附加限制
11 1515 N≤1000N \leq 1000,K,Q≤500K, Q \leq 500,0≤t1≤t2≤100 \leq t_1 \leq t_2 \leq 10
22 4545 N≤10000N \leq 10000,K,Q≤5000K, Q \leq 5000
33 4040 无附加限制