P5456. 聚餐汇合最短
场次:2026年9月16日-非AI方向 · 来源:CodeFun2000 P5456
题目描述
小红约了 名同伴,打算在城里某一家馆子碰头。
路网里既有只准单向走的路段(行人车辆都受此限),也有可以来回走的路段。小红驾车按每公里 分钟行进,同伴步行按每公里 分钟行进。
已知小红出发路口、馆子所在路口,以及每名同伴所在路口。小红可以:
- 径直把车开到馆子
- 先绕去接上若干同伴,再一同抵达
- 没接到的同伴则自己走过去
每名同伴只能二选一:坐小红的车,或全程步行,中途不许改主意。
请算出一种安排,让所有人抵达馆子的时刻尽可能早(以最晚到达的那人为准)。
输入格式
首行给出四个整数
- : 全城路口一共有多少个()
- : 路段一共有多少条()
- : 小红开车起步的路口()
- : 馆子对应的路口()
随后 行,每行四个整数 :路口 、 之间铺着一条 ()公里长的路; 表示只能从 开向 , 表示两端都能走。
再下一行一个整数 (),即同伴人数。
再下一行 个整数,即各同伴所在路口。
输出格式
输出一个整数:所有人抵达馆子的最短时间(分钟)。
示例
示例 1
输入:
4 4 1 4
1 2 3 1
2 4 4 1
1 3 5 1
3 4 2 1
2
2 3
输出:
20
说明:
四个路口、四条双向路。小红在 ,馆子在 ,两名同伴在 、。
- 只接路口 :车程 ,共 公里、 分钟;路口 的同伴步行 ,共 公里、 分钟。汇合时刻
- 两人都接上:车程更长,汇合时刻大于
- 因此最短为
示例 2
输入:
3 3 1 3
1 2 10 1
2 3 10 1
1 3 2 1
1
2
输出:
40
说明:
小红在 ,馆子在 ,一名同伴在 。
- 直接去馆子再让同伴步行: 为 公里、 分钟
- 绕去路口 再开到 :车程 公里、 分钟
- 因此最短为
提示
- 车子能装多少人不设上限
- 同一条路、同一个点都可以走多次
- 数据保证每个人都能抵达馆子