AT_joi2020ho_d.オリンピックバス (Olympic Bus)
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
JOI 国有 N 个城市,编号从 1 到 N。此外,有 M 条单向公交线路,编号从 1 到 M。第 i 条公交线路(1≤i≤M)从城市 Ui 开往城市 Vi,票价为 Ci 日元。在第 i 条公交线路上,除了在城市 Ui 上车和城市 Vi 下车外,不能在其他城市上下车。可能存在多条从同一城市出发到同一城市的公交线路。
JOI 国即将举办奥运会。运输大臣 K 理事长打算选择至多一条公交线路,在奥运会期间将其行驶方向反转,且票价不变。也就是说,如果选择了第 i 条公交线路(1≤i≤M),那么在奥运会期间,这条线路将从城市 Ui 开往城市 Vi 改为从城市 Vi 开往城市 Ui。不过,反转第 i 条公交线路的方向需要花费 Di 日元,这笔费用由 K 理事长自掏腰包支付。为避免混乱,公交线路的方向只能在奥运会开始前反转,期间不能再次更改。
K 理事长计划在奥运会期间,从城市 1 到城市 N 并返回,乘坐公交线路往返一次。希望通过巧妙选择反转的公交线路,使得往返总票价与反转费用之和最小。
给定城市数量和公交线路的信息,请编写程序,计算通过选择合适的公交线路反转方向后,从城市 1 到城市 N 往返的总票价与反转费用之和的最小值。如果无论如何选择公交线路都无法完成往返,则输出 −1。
输入格式
输入以如下格式从标准输入读入。所有输入均为整数。
N M
U1 V1 C1 D1
⋮
UM VM CM DM
输出格式
请输出一行,从城市 1 到城市 N 往返的总票价与反转费用之和的最小值。如果无论如何选择公交线路都无法完成往返,则输出 −1。
输入输出样例
输入#1
4 5 1 2 4 4 1 3 2 1 4 3 1 2 4 1 6 1 2 4 2 5
输出#1
10
输入#2
4 10 1 2 4 4 1 2 4 4 1 3 2 1 1 3 2 1 4 3 1 2 4 3 1 2 4 1 6 1 4 1 6 1 2 4 2 5 2 4 2 5
输出#2
10
输入#3
4 4 1 2 0 4 1 3 0 1 4 3 0 2 4 1 0 1
输出#3
2
输入#4
4 5 1 2 4 4 1 3 2 4 4 3 1 5 4 1 6 1 2 4 2 5
输出#4
12
输入#5
4 5 2 1 4 4 1 3 2 1 4 3 1 2 4 3 6 1 2 4 2 5
输出#5
-1
说明/提示
约束
- 2≤N≤200。
- 1≤M≤50000。
- 1≤Ui≤N(1≤i≤M)。
- 1≤Vi≤N(1≤i≤M)。
- Ui=Vi(1≤i≤M)。
- 0≤Ci≤1000000(1≤i≤M)。
- 0≤Di≤1000000000(1≤i≤M)。
子任务
1.(5 分)M≤1000。
2.(11 分)M 为偶数,且 U2i−1=U2i,V2i−1=V2i,C2i−1=C2i(1≤i≤2M)。
3.(21 分)Ci=0(1≤i≤M)。
4.(63 分)无额外约束。
样例解释 1
如果以 1 的费用反转第 2 条公交线路的方向,则从城市 1 到城市 4 的最小票价为 6,从城市 4 到城市 1 的最小票价为 3,往返总票价加上反转费用为 10。无法使往返总票价与反转费用之和小于 10,因此输出 10。
样例解释 2
本输入输出样例满足子任务 2 的约束。
样例解释 3
本输入输出样例满足子任务 3 的约束。
样例解释 4
可以不反转任何公交线路。
样例解释 5
在本输入样例中,存在两条从城市 4 到城市 3 的公交线路。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?