loj#P3356. 「BalticOI 2017 Day1」Toll

「BalticOI 2017 Day1」Toll

题目描述

题目译自 BalticOI 2017 Day1「Toll

作为一个合格的货运公司,在送达货物的同时也要让花的钱最少。
这座城市有 nn 个地点,这 nn 个地点之间有 mm 条边。
货运公司接到了 oo 个订单,他们要想方设法的让路途中花的钱最少。
对于每条路,都有三个信息:

  • a,ba,b 代表从 aa 到达 bb,并且是单向的;
  • tt 代表这条路需要多少钱。

并且对于每个订单,都给出 aabb 代表要把物品从 aa 运到 bb ,求每个订单需要花的最少的钱;如果无法送达就输出 1-1
特别的,对于从 aabb 的路,一定满足:

$$\left\lfloor\dfrac{b}{k}\right\rfloor=1+\left\lfloor\dfrac{a}{k}\right\rfloor $$

其中 kk 是一个给定的常数。

输入格式

第一行四个整数 k,n,m,ok,n,m,o 代表一个常数,地点的个数,边的个数,订单的个数。
点的编号为从 00n1n - 1
接下来 mm 行每行三个整数 a,b,ta,b,t 代表从 aa 连向 bb 要花费 tt,保证满足 $\left\lfloor\dfrac{b}{k}\right\rfloor=1+\left\lfloor\dfrac{a}{k}\right\rfloor$,并且两点之间连接的边数不超过 11 条边。
接下来 oo 行每行两个整数 a,ba,b 代表要从 aa 运货到 bb

输出格式

对于每个订单,输出一行一个整数表示答案。

5 14 5 5
0 5 9
5 12 10
0 7 7
7 12 8
4 7 10
0 12
0 5
0 7
7 12
0 13
15
9
7
8
-1

数据范围与提示

对于 100%100\% 的数据,1n500001 \le n \le 500001o100001 \le o \le 100001k51 \le k \le 50a<b<n0 \le a < b < n1t100001 \le t \le 10000

详细子任务与附加限制如下:

  • Subtask 1(7 pts):k=1k=1
  • Subtask 2(10 pts):每个订单中的 a=0a=0
  • Subtask 3(8 pts):o100o \le 100
  • Subtask 4(31 pts):o3000o \le 3000
  • Subtask 5(44 pts):无特殊限制。