#72. [R12F]公交问题

[R12F]公交问题

时空限制

2.5S/512M

题目描述

nn 个站点,编号 1n1\sim n。还有 mm 条公交路线,ii 号公交路线的首次发车时间为 aia_i,每辆车从站点 uiu_i 出发经过 tit_i 时间到达站点 viv_i

所有公交路线都是间隔 kk 时间发车,也就是说对于 ii 号公交路线,会分别在时间 ai,ai+k,ai+2×k,ai+3×k,a_i,a_i+k,a_i+2\times k,a_i+3\times k,\dots 发车。

现在时间为 00,你位于站点 11,要前往站点 nn。过程中可以选择在站点等待下次发车,但是由于车上有空调而站点没有空调,所以你希望尽可能减少在站点等待的时间。

求在站点等待的总时间之和的最小值。

格式

输入格式

第一行包含三个整数 n,m,kn,m,k,分别表示站点的数量、公交路线的数量以及发车时间的间隔。

接下来 mm 行每行包含四个整数 ai,ui,vi,tia_i,u_i,v_i,t_i,表示一条首次发车时间为 aia_i,每辆车从站点 uiu_i 出发经过 tit_i 时间到达站点 viv_i 的公交路线。

输出格式

输出一个整数表示在站点等待的总时间之和的最小值。保证存在从站点 11 出发到达站点 nn 的方案。

样例

样例输入 #1

4 6 5
3 2 3 5
4 1 2 4
0 3 4 2
3 1 3 3
0 2 4 8
3 3 2 6

样例输出 #1

5

样例解释 #1

以下为其中一种在站点等待的总时间之和最小的方案:在站点 11 等待到时间 44,坐 22 号公交在时间 88 到达站点 22,坐 11 号公交在时间 1313 到达站点 33,坐 66 号公交在时间 1919 到达站点 22,在站点 22 等待到时间 2020,坐 55 号公交在时间 2828 到达站点 44

在站点等待的总时间之和为 4+0+0+1=54+0+0+1=5

数据规模

对于 30%30\% 的数据,k10k\leq 10

另有 30%30\% 的数据,m1000m\leq 1000

对于 100%100\% 的数据,1n5×1041\leq n\leq 5\times 10^41m3×1051\leq m\leq 3\times 10^51k1061\leq k\leq 10^60ai<k0\leq a_i<k1ui,vin1\leq u_i,v_i\leq n1ti1091\leq t_i\leq 10^9。数据保证存在从站点 11 出发到达站点 nn 的方案,可能存在重边或者自环。