#P14878. [OOI2023预选赛]Food Delivery送餐
[OOI2023预选赛]Food Delivery送餐
题目描述
Berland 的首都是一座大城市,有 个路口,编号为 到 。
城市里有 条单向道路。第 条道路从路口 通向路口 。某些道路有“延续道路”。如果汽车刚刚经过道路 ,接着从当前路口驶入道路 ,且道路 是道路 的延续,那么道路 的行驶时间会比道路 的实际行驶时间少 秒;如果道路 的实际行驶时间已经是 ,则道路 的实际行驶时间仍为 。
如果下一条路不是上一条路的延续,汽车需要减速转弯,于是这条路的行驶时间等于它的初始行驶时间。
每条道路 有一个数 表示它的延续道路:
- 若 ,表示道路 没有延续道路;
- 若 ,表示道路 是道路 的延续道路。
每条道路 还具有初始行驶时间 。沿某条路径行驶时,道路 的实际时间按如下规则确定:
- 如果道路 是路径上的第一条道路,或者道路 不是上一条道路的延续,则实际时间为 ;
- 如果道路 是上一条道路的延续,且上一条道路实际耗时为 秒,则道路 的实际时间为 秒。
你在路口 开了一家餐馆。请对每个路口求出从路口 出发送餐到该路口所需的最短时间;如果无法到达,输出 -1。
输入格式
第一行包含三个整数 ,分别表示路口数、道路数和测试组编号。
接下来 行,每行包含四个整数 ,描述第 条道路:
- :起点;
- :终点;
- :初始行驶时间;
- :延续道路编号,若无延续道路则为 。
保证如果道路 有延续道路,则该延续道路从 出发。还保证若 ,则 。
注意:同一对路口之间可能有多条道路;一条道路可能是多条道路的延续;进入同一顶点的不同道路可能有不同的延续道路。
输出格式
输出一行 个整数,第 个数表示从路口 到路口 的最短送餐时间。若无法到达,输出 -1。
数据范围
,,,, 或 。
样例
样例 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 中,到路口 可走道路 ,耗时 。到路口 时,先走道路 ,再走道路 。由于道路 是道路 的延续,第二段耗时为 ,总耗时为 。
样例 2 中,到路口 的一种最优路径为道路 ,耗时 。路口 不可达。
样例 3 中,到路口 的最优路径为道路 ,耗时 。
子任务
| 组别 | 分数 | 附加限制 | 依赖 | 备注 |
|---|---|---|---|---|
| 0 | 样例 | - | ||
| 1 | 10 | 0 | ||
| 2 | 8 | 0,1 | ||
| 3 | 9 | 所有道路 | - | |
| 4 | 所有 | |||
| 5 | 11 | 0 | ||
| 6 | 16 | 每条道路至多是一条其他道路的延续 | 3 | |
| 7 | 19 | 0--2,5 | ||
| 8 | 6 | 0--2,5,7 | ||
| 9 | 0--2,5,7,8 | Offline 检查 | ||
| 10 | 无额外限制 | 0--10 | ||