P0735

[Baltic2005]Trip

[Baltic2005]Trip

有 NN 座城镇和 MM 条单向巴士路线,每条路线中途均不停车。城镇编号为 11 到 NN。

一名旅行者在时刻 00 位于城镇 11,希望在时刻 TT 位于城镇 PP。如果提前到达,他必须在城镇中等待。

对于第 ii 条巴士路线,已知其起点城镇 sis_i 和终点城镇 tit_i。巴士的出发和到达时间只能确定在一定范围内:它会在闭区间 [ai,bi][a_i,b_i] 内离开城镇 sis_i,并在闭区间 [ci,di][c_i,d_i] 内到达城镇 tit_i。

旅行者不喜欢等待,因此希望选择一个旅行方案,使总等待时间在最坏情况下尽可能短。同时,该方案必须保证他绝对不会错过任何一辆计划乘坐的巴士。也就是说,每次换乘时,前一辆巴士的最晚到达时间不能晚于后一辆巴士的最早出发时间。

计算最坏情况下的等待时间时,应假设旅行者乘坐的巴士尽早到达,而下一辆巴士尽晚出发。旅行开始前在城镇 11 的等待时间,以及抵达城镇 PP 后直到时刻 TT 的等待时间,也计入总等待时间。

请计算所有可行旅行方案中,最坏情况下总等待时间的最小值。

输入格式

第一行包含四个整数 NN、MM、PP 和 TT,分别表示城镇数量、巴士路线数量、目的地城镇编号和目标时刻。

接下来 MM 行,每行包含六个整数 sis_i、tit_i、aia_i、bib_i、cic_i、did_i,描述一条巴士路线。其中,sis_i 和 tit_i 分别为起点城镇和终点城镇,巴士在闭区间 [ai,bi][a_i,b_i] 内出发,并在闭区间 [ci,di][c_i,d_i] 内到达。

输出格式

输出一个整数,表示最合理旅行方案的最坏情况总等待时间。

如果无法保证旅行者在时刻 TT 位于城镇 PP,输出 −1-1。

样例输入

3 6 2 100
1 3 10 20 30 40
3 2 32 35 95 95
1 1 1 1 7 8
1 3 8 8 9 9
2 2 98 98 99 99
1 2 0 0 99 101

样例输出

32

样例解释

该旅行方案在最坏情况下的过程如下:

  • 时刻 00 至 11:在城镇 11 等待;
  • 时刻 11 至 77:乘坐第 33 条路线,从城镇 11 到城镇 11;
  • 时刻 77 至 88:在城镇 11 等待;
  • 时刻 88 至 99:乘坐第 44 条路线,从城镇 11 到城镇 33;
  • 时刻 99 至 3535:在城镇 33 等待;
  • 时刻 3535 至 9595:乘坐第 22 条路线,从城镇 33 到城镇 22;
  • 时刻 9595 至 9898:在城镇 22 等待;
  • 时刻 9898 至 9999:乘坐第 55 条路线,从城镇 22 到城镇 22;
  • 时刻 9999 至 100100:在城镇 22 等待。

总等待时间为:

1+1+26+3+1=32。1+1+26+3+1=32。

数据范围

  • 1≤N≤5×1041\le N\le 5\times 10^4;
  • 1≤M≤1051\le M\le 10^5;
  • 1≤P≤N1\le P\le N;
  • 0≤T≤1090\le T\le 10^9;
  • 1≤si≤N1\le s_i\le N,1≤ti≤N1\le t_i\le N;
  • 0≤ai≤bi<ci≤di≤1090\le a_i\le b_i<c_i\le d_i\le 10^9。

来源与许可

本题为 Baltic OI 2005 试题「Trip」,题面与测试数据整理自 BZOJ 1395。

样例 1

输入

3 6 2 100
1 3 10 20 30 40
3 2 32 35 95 95
1 1 1 1 7 8
1 3 8 8 9 9
2 2 98 98 99 99
1 2 0 0 99 101

输出

32