#P15441. [蓝桥杯 2025 国 Python/Java 研究生组] 耗时最短的路径

[蓝桥杯 2025 国 Python/Java 研究生组] 耗时最短的路径

说明

探险者需要穿越一个充满时空裂隙的迷宫,共包含有 nn 个时空裂隙(简称结点),编号为 1n1 \sim n,探险者可以在结点任意停留。在时空裂隙之间存在着 mm 条路径,每条路径可以描述为 (ui,vi,wi,si,ei)(u_i, v_i, w_i, s_i, e_i) 表示从结点 uiu_i 到结点 viv_i 存在着一条双向路径,通过这条路径需要耗时 wiw_i,且只有当前时刻位于 [si,ei][s_i, e_i] 的区间才可以进入这条路径并通过(因此经过这条路径到达 viv_i 的时刻必然在 [si+wi,ei+wi][s_i + w_i, e_i + w_i] 区间内)。

同时,探险者有调整时间流速的机会:即可以在某一次通过路径时忽略 [si,ei][s_i, e_i] 的时间限制,这样的技能最多使用 kk 次。

初始时,探险者在 11 号结点,初始时刻为 00。请问从结点 11 到达结点 nn,需要消耗的最短时间是多少?

输入格式

输入的第一行包含三个整数 n,m,kn, m, k,相邻整数之间使用一个空格分隔。

接下来 mm 行,每行包含五个整数 ui,vi,wi,si,eiu_i, v_i, w_i, s_i, e_i,相邻整数之间使用一个空格分隔,表示第 ii 条路径的信息。图中可能出现重边和自环。

输出格式

输出一行包含一个整数表示答案,如果不存在可能的路径,输出整数 1-1

3 3 0
1 2 1 0 3
2 3 3 5 10
1 3 6 0 7
6
3 3 1
1 2 1 0 3
2 3 3 5 10
1 3 6 0 7
4

提示

样例说明

对于样例 1:可以直接走 131 \to 3 这条路径,耗时为 6;走 1231 \to 2 \to 3 耗时为 8,因为到达 2 之后需要等到时间 5 才可以继续前进。

对于样例 2:由于有一次释放技能的机会,先走 121 \to 2,然后使用一次技能从 232 \to 3,总耗时为 4。

评测用例规模与约定

对于 10%10\% 的评测用例,2n52 \le n \le 5

对于 20%20\% 的评测用例,2n102 \le n \le 10

对于 40%40\% 的评测用例,2n1002 \le n \le 100

对于 60%60\% 的评测用例,2n10002 \le n \le 1000

对于 80%80\% 的评测用例,2n100002 \le n \le 10000

对于所有评测用例,2n500002 \le n \le 50000,$1 \le m \le \min\left(\dfrac{n(n-1)}{2}, 10^5\right)$,0k100 \le k \le 101ui,vin1 \le u_i, v_i \le n0si,ei4×1030 \le s_i, e_i \le 4 \times 10^3