#P6429. 「JOISC 2023 Day1」两种货币

「JOISC 2023 Day1」两种货币

题目描述

题目译自 JOISC 2023 Day1 T1 「ふたつの通貨 / Two Currencies

JOI 国有 NN 个城市,从 11NN 编号,有 N1N-1 条道路,从 11N1N-1 编号。路 i (1iN1)i\ (1\le i\le N-1) 双向连接城市 AiA_iBiB_i。从任意城市出发,经过一些道路总可以到达任意其他城市。

在 JOI 国的某些路上有收费站。有 MM 个收费站,编号为 11MM。收费站 j (1jM)j\ (1\le j\le M) 位于路 PjP_j 上。为了经过收费站,你需要要么付一枚金币,要么付 CjC_j 枚银币。

JOI 国中有 QQ 位公民,编号为 11QQ。公民 k (1kQ)k\ (1\le k\le Q)XkX_k 枚金币和 YkY_k 枚银币,并且想从城市 SkS_k 前往城市 TkT_k。因为金币十分地珍贵,因此所有公民都希望尽可能多地保留金币。

给定城市,道路,收费站和 JOI 国公民的信息,写一个程序,对于每个 k (1kQ)k\ (1\le k\le Q),确定对于公民 kk,从 SkS_k 前往 TkT_k 是否可行,如果可行,计算公民 kk 最多可以留下多少金币。

输入格式

第一行三个整数 N,M,QN,M,Q

接下来 N1N-1 行,每行两个整数 Ai,BiA_i,B_i

接下来 MM 行,每行两个整数 Pj,CjP_j,C_j

接下来 QQ 行,每行四个整数 Sk,Tk,Xk,YkS_k,T_k,X_k,Y_k

输出格式

输出 QQ 行,第 k (1kQ)k\ (1\le k\le Q) 行表示如果公民 kk 可以从 SkS_k 前往 TkT_k,公民 kk 最多可以留下的金币数量,否则输出 1-1

5 4 3
1 2
1 3
2 4
2 5
2 9
2 4
3 5
4 7
3 4 2 11
5 3 4 5
2 3 1 1

1
2
-1

10 7 9
1 8
6 3
5 9
7 9
3 1
3 4
10 1
2 6
5 6
9 4
7 4
7 4
2 4
7 4
7 4
1 4
8 6 5 3
3 9 8 0
4 7 6 15
7 4 9 3
6 4 8 0
9 10 5 16
5 3 2 4
2 8 4 3
6 1 3 3

3
6
6
7
7
3
1
2
2

8 7 11
1 2
2 3
3 4
4 5
5 6
6 7
7 8
4 4
3 7
2 10
5 2
4 1
4 4
5 6
6 3 7 69
7 1 5 55
3 1 6 8
8 2 5 45
4 6 4 45
6 1 3 33
2 1 0 19
3 7 2 31
7 1 2 31
7 2 4 58
8 3 5 63

7
5
5
5
4
2
0
2
1
4
5

8 7 11
1 8
1 4
3 1
3 6
6 7
2 1
5 2
5 5
5 8
4 7
6 6
4 1
6 4
1 7
4 7 2 18
2 4 5 1
4 2 1 32
1 5 7 21
2 5 0 50
8 4 4 33
1 7 6 16
4 8 7 18
1 2 8 13
5 4 10 42
7 1 6 40

1
3
1
7
0
4
5
7
8
10
6

数据范围与提示

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

  • 2N1052\le N\le 10^5
  • 1M,Q1051\le M,Q\le 10^5
  • 1Ai,Bi,Sk,TkN,SkTk1\le A_i,B_i,S_k,T_k\le N,S_k\neq T_k
  • 从任意城市出发,经过一些道路总可以到达任意其他城市
  • 1PjN11\le P_j\le N-1
  • 1Cj1091\le C_j\le 10^9
  • 0Xk109,0Yk10180\le X_k\le 10^9,0\le Y_k\le 10^{18}

详细子任务及附加限制如下表所示。

子任务编号 附加限制 分值
11 N,M,Q2 000N,M,Q\le 2\ 000 1010
22 C1=C2==CMC_1=C_2=\ldots=C_M 2828
33 Ai=i,Bi=i+1 (1iN1)A_i=i,B_i=i+1\ (1\le i\le N-1) 3030
44 无附加限制 3232