#P16844. [GKS 2021 #B] Truck Delivery

    ID: 19171 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>线段树2021树链剖分可持久化线段树Google Kick Start

[GKS 2021 #B] Truck Delivery

题目描述

Charles 是 Googleland 城市的一名卡车司机。Googleland 的结构是一棵有 NN 个节点的树,每个节点代表一个城市,每条边代表两个城市之间的道路。城市编号为 11 到 NN。Googleland 的首都是城市 11。每天,Charles 在城市 CC 装载重量为 WW 的货物,并希望沿城市间的唯一简单路径将货物运送到城市 11。每条道路 ii 设有一个通行费,如果货物重量大于或等于载重限制 LiL_i,则需支付金额 AiA_i。

Charles 工作 QQ 天,每天给出起点城市 CC 和货物重量 WW。对于每天,求 Charles 当天支付的所有通行费的最大公约数。如果当天无需支付任何通行费,则答案为 00。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行包含两个整数 NN 和 QQ。

接下来的 N−1N-1 行描述道路。其中第 ii 行包含四个空格分隔的整数 XX、YY、LiL_i 和 AiA_i,表示连接城市 XX 和 YY 的道路,其载重限制为 LiL_i,通行费为 AiA_i。

接下来的 QQ 行描述查询。其中第 jj 行包含两个空格分隔的整数 CjC_j 和 WjW_j,表示第 jj 天的起点城市和货物重量。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是按顺序给出的 QQ 天答案列表,用空格分隔。

2
7 5
2 1 2 4
2 3 7 8
3 4 6 2
5 3 9 9
2 6 1 5
7 1 5 7
5 10
5 8
4 1
6 1
7 6
3 2
1 2 2 10
3 2 3 5
3 2
3 3
Case #1: 1 4 0 5 7
Case #2: 10 5

提示

在样例 #1 中:

  • 第一天,Charles 需要支付道路 (5,3)(5, 3)、(3,2)(3, 2) 和 (2,1)(2, 1) 的通行费。答案为 gcd⁡(9,8,4)=1\gcd(9, 8, 4) = 1。
  • 第二天,Charles 需要支付道路 (3,2)(3, 2) 和 (2,1)(2, 1) 的通行费。答案为 gcd⁡(8,4)=4\gcd(8, 4) = 4。
  • 第三天,Charles 无需支付任何通行费,因此答案为 00。

在样例 #2 中:

  • 第一天,Charles 需要支付道路 (2,1)(2, 1) 的通行费。答案为 1010。
  • 第二天,Charles 需要支付道路 (3,2)(3, 2) 和 (2,1)(2, 1) 的通行费。答案为 gcd⁡(5,10)=5\gcd(5, 10) = 5。

限制条件

1≤T≤1001 \le T \le 100。

对于所有 ii,1≤Li≤2×1051 \le L_i \le 2 \times 10^5。

对于所有 ii,1≤Ai≤10181 \le A_i \le 10^{18}。

所有 LiL_i 互不相同。

对于所有 jj,2≤Cj≤N2 \le C_j \le N。

对于所有 jj,1≤Wj≤2×1051 \le W_j \le 2 \times 10^5。

保证给定的道路构成一棵树。

测试集 1

2≤N≤10002 \le N \le 1000。

1≤Q≤10001 \le Q \le 1000。

测试集 2

最多 2020 个测试用例满足 2≤N≤5×1042 \le N \le 5 \times 10^4 且 1≤Q≤1051 \le Q \le 10^5。

其余测试用例满足 2≤N≤10002 \le N \le 1000 且 1≤Q≤10001 \le Q \le 1000。

翻译由 DeepSeek V4 Pro 完成