#P14878. [OOI2023预选赛]Food Delivery送餐

    ID: 14094 传统题 3500ms 1024MiB 尝试: 1 已通过: 1 难度: 9 上传者: 标签>CF2600最短路数据结构树链剖分图论DFS线段树

[OOI2023预选赛]Food Delivery送餐

题目描述

Berland 的首都是一座大城市,有 nn 个路口,编号为 11nn

城市里有 mm 条单向道路。第 ii 条道路从路口 aia_i 通向路口 bib_i。某些道路有“延续道路”。如果汽车刚刚经过道路 ii,接着从当前路口驶入道路 jj,且道路 jj 是道路 ii 的延续,那么道路 jj 的行驶时间会比道路 ii 的实际行驶时间少 11 秒;如果道路 ii 的实际行驶时间已经是 00,则道路 jj 的实际行驶时间仍为 00

如果下一条路不是上一条路的延续,汽车需要减速转弯,于是这条路的行驶时间等于它的初始行驶时间。

每条道路 ii 有一个数 did_i 表示它的延续道路:

  • di=1d_i=-1,表示道路 ii 没有延续道路;
  • di>0d_i>0,表示道路 did_i 是道路 ii 的延续道路。

每条道路 ii 还具有初始行驶时间 cic_i。沿某条路径行驶时,道路 ii 的实际时间按如下规则确定:

  • 如果道路 ii 是路径上的第一条道路,或者道路 ii 不是上一条道路的延续,则实际时间为 cic_i
  • 如果道路 ii 是上一条道路的延续,且上一条道路实际耗时为 xx 秒,则道路 ii 的实际时间为 max(0,x1)\max(0,x-1) 秒。

你在路口 11 开了一家餐馆。请对每个路口求出从路口 11 出发送餐到该路口所需的最短时间;如果无法到达,输出 -1

输入格式

第一行包含三个整数 n,m,gn,m,g,分别表示路口数、道路数和测试组编号。

接下来 mm 行,每行包含四个整数 ai,bi,ci,dia_i,b_i,c_i,d_i,描述第 ii 条道路:

  • aia_i:起点;
  • bib_i:终点;
  • cic_i:初始行驶时间;
  • did_i:延续道路编号,若无延续道路则为 1-1

保证如果道路 ii 有延续道路,则该延续道路从 bib_i 出发。还保证若 di1d_i\ne -1,则 cdici1c_{d_i} \ge c_i-1

注意:同一对路口之间可能有多条道路;一条道路可能是多条道路的延续;进入同一顶点的不同道路可能有不同的延续道路。

输出格式

输出一行 nn 个整数,第 ii 个数表示从路口 11 到路口 ii 的最短送餐时间。若无法到达,输出 -1

数据范围

1n,m5000001 \le n,m \le 5000000g100 \le g \le 101ai,bin1 \le a_i,b_i \le n1ci1091 \le c_i \le 10^9di=1d_i=-11dim1 \le d_i \le m

样例

样例 1

3 2 0
1 2 5 2
2 3 10 -1
0 5 9

样例 2

5 4 0
1 2 5 4
3 4 10 -1
1 3 8 2
2 3 7 2
0 5 8 12 -1

样例 3

4 4 0
1 2 10 3
2 2 4 3
2 4 9 4
4 1 10 1
0 10 -1 17

样例 4

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

样例解释

样例 1 中,到路口 22 可走道路 11,耗时 55。到路口 33 时,先走道路 11,再走道路 22。由于道路 22 是道路 11 的延续,第二段耗时为 44,总耗时为 99

样例 2 中,到路口 44 的一种最优路径为道路 1,4,21,4,2,耗时 5+4+3=125+4+3=12。路口 55 不可达。

样例 3 中,到路口 44 的最优路径为道路 1,2,31,2,3,耗时 10+4+3=1710+4+3=17

子任务

组别 分数 附加限制 依赖 备注
0 样例 -
1 10 n,m1000n,m \le 1000 0
2 8 n,m10000n,m \le 10000 0,1
3 9 所有道路 di=1d_i=-1 -
4 所有 ci=1c_i=1
5 11 n,m100000, ci10n,m \le 100000,\ c_i \le 10 0
6 16 每条道路至多是一条其他道路的延续 3
7 19 n,m100000n,m \le 100000 0--2,5
8 6 n,m250000n,m \le 250000 0--2,5,7
9 n,m400000n,m \le 400000 0--2,5,7,8 Offline 检查
10 无额外限制 0--10