#P1846. 「JOISC 2014 Day1」巴士走读

「JOISC 2014 Day1」巴士走读

题目描述

感谢 PoPoQQQ 提供的翻译,已获原译者授权搬运。

题目译自 JOISC 2014 Day1 T1「バス通学」

大学生 JOI 君每天乘坐巴士走读。
JOI 君的家和学校都在 IOI 市内。IOI 市内共有 NN 个巴士站点,编号为 1∼N1\sim N,离 JOI 家最近的站点为 11 号站点,离大学最近的站点为 NN 号站点。
IOI 市内共有 MM 辆巴士,每辆巴士一天只跑一次,从某一时刻某一停靠点出发,在某一时刻到达另一个站点。运行途中不可以下车。
JOI 君每天要乘坐一次以上的巴士到达学校。我们可以无视 JOI 君换车的时间,换言之,为了换乘某个时刻从某个停靠点出发的巴士,只需要在该巴士的出发时间或之前到达站点就可以了。此外,多次在某个站点换乘也是可以的。
在这样的条件下,JOI 君想知道自己应该何时从家中出发才能按时赶到学校。然而,学校每天开始上课的时间都不同。在某 QQ 天里,每天到达 NN 号站点的最晚时间都是已知的,JOI 君想知道,他最晚何时到达 11 号站点才能及时到校。
现在给你巴士的运营信息,以及这 QQ 天里每天到达 NN 号站点的最晚时间,请你求出每天 JOI 君最晚何时到达 11 号站点。

输入格式

第一行两个空格分隔的正整数 NN 和 MM,表示 IOI 市内有 NN 个巴士站点和 MM 辆巴士。
接下来 MM 行,第 ii 行 (1≤i≤M)(1\le i\le M) 有四个空格分隔的整数 Ai,A_i, Bi,B_i, Xi,X_i, YiY_i (1≤Ai≤N,(1\le A_i\le N, 1≤Bi≤N,1\le B_i\le N, Ai≠Bi)A_i≠B_i),表示第 ii 辆巴士在时刻 XiX_i 从停靠点 AiA_i 出发,在时刻 YiY_i 到达停靠点 BiB_i。时刻从半夜 12 点开始计算,单位为毫秒。
接下来一行一个整数 QQ,含义如题目中所示。
接下来 QQ 行,第 ii 行 (1≤i≤Q)(1\le i\le Q) 有一个整数 LiL_i,表示第 ii 天最迟 LiL_i 时刻到达 NN 号站点。

输出格式

输出 QQ 行,第 ii 行 (1≤i≤Q)(1\le i\le Q) 一个整数,表示 JOI 君第 ii 天最迟到达 11 号站点的时刻。 如果无法在时限内到达,输出 -1\texttt{-1}。

样例 1

5 6
1 2 10 25
1 2 12 30
2 5 26 50
1 5 5 20
1 4 30 40
4 5 50 70
4
10
30
60
100
-1
5
10
30

无法在时刻 10 之前到达 5 号车站。 为了在时刻 30 到达,您可以在时刻 5 乘坐 4 号车。 为了在时刻 60 到达,您可以执行以下操作。

  • 在时刻 10 乘坐 1 号车。
  • 在时刻 25 到达 2 号车站,等待 1 ms,转 3 号车。
  • 在时刻 50 抵达 5 号车站。

为了在时间 100 到达,您可以执行以下操作。

  • 在时刻 30 乘坐 5 号车。
  • 在时刻 40 到达 4 号车,等待 10 ms,转 6 号车。
  • 在时刻 70 抵达 5 号车站。
3 8
1 2 1 5
1 3 0 1
1 3 2 8
2 3 2 3
2 3 3 4
2 3 4 5
2 3 5 6
2 3 6 7
6
3
4
5
6
7
8
0
0
0
1
1
2

数据范围与提示

对于所有数据,2≤N≤105,2\le N\le 10^5, 1≤M≤3×105,1\le M\le 3\times 10^5, 0≤Xi<Yi<864000000\le X_i<Y_i<86400000 (=24×60×60×1000),(=24\times 60\times 60\times 1000), 1≤Q≤105,1\le Q\le 10^5, 0≤Li<864000000\le L_i<86400000。

子任务编号 分值 N,MN, M QQ
1 20 N,M≤2000N, M\le 2000 Q=1Q=1
2 15
3 Q=1Q=1
4 50