UOJ Logo Universal Online Judge

UOJ

#846. 【JOISC2023】两种货币

附件下载 统计

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

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

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

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

输入格式

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

接下来 N1 行,每行两个整数 Ai,Bi

接下来 M 行,每行两个整数 Pj,Cj

接下来 Q 行,每行四个整数 Sk,Tk,Xk,Yk

输出格式

输出 Q 行,第 k (1kQ) 行表示如果公民 k 可以从 Sk 前往 Tk,公民 k 最多可以留下的金币数量,否则输出 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

1
2
-1

样例解释

公民 1 可以按如下方式从城市 3 前往城市 4。在旅行过后,公民 1 可以留下 1 枚金币。

  1. 公民 1 通过路 2 从从城市 3 前往城市 1。路 2 上有收费站 1,2。公民 1 在收费站 1 处支付 1 枚金币并通过它,在收费站 2 支付 4 枚银币并通过它。在这之后,公民 11 枚金币和 7 枚银币。
  2. 公民 1 通过路 1 从从城市 1 前往城市 2。路 1 上没有收费站,通过后公民 11 枚金币和 7 枚银币。
  3. 公民 1 通过路 3 从从城市 2 前往城市 4。路 3 上有收费站 3。公民 1 在收费站 3 处支付 5 枚银币并通过它。在这之后,公民 11 枚金币和 2 枚银币。

因为公民 1 不可能在旅行之后保留 2 枚或以上金币,因此第一行输出 1

公民 2 可以按如下方式从城市 5 前往城市 3。在旅行过后,公民 2 可以留下 2 枚金币。

  1. 公民 2 通过路 4 从从城市 5 前往城市 2。路 4 上有收费站 4。公民 2 在收费站 4 处支付 1 枚金币并通过它。在这之后,公民 23 枚金币和 5 枚银币。
  2. 公民 2 通过路 1 从从城市 2 前往城市 1。路 1 上没有收费站,通过后公民 23 枚金币和 5 枚银币。
  3. 公民 2 通过路 2 从从城市 1 前往城市 3。路 2 上有收费站 1,2。公民 2 在收费站 1 处支付 1 枚金币并通过它,在收费站 2 支付 4 枚银币并通过它。在这之后,公民 22 枚金币和 1 枚银币。

因为公民 2 不可能在旅行之后保留 3 枚或以上金币,因此第二行输出 2

因为公民 3 不可能从城市 2 前往城市 3,因此第三行输出 1

这组样例满足子任务 1,4 的限制。

数据范围

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

  • 2N105
  • 1M,Q105
  • 1Ai,Bi,Sk,TkN,SkTk
  • 从任意城市出发,经过一些道路总可以到达任意其他城市
  • 1PjN1
  • 1Cj109
  • 0Xk109,0Yk1018

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

子任务编号 附加限制 分值
1 N,M,Q2 000 10
2 C1=C2==CM 28
3 Ai=i,Bi=i+1 (1iN1) 30
4 无附加限制 32