#joi2020hod. [joi2020ho_d]オリンピックバス (Olympic Bus)

[joi2020ho_d]オリンピックバス (Olympic Bus)

翻译结果:

JOI国有NN个城市,编号从1到NN。此外,有MM条单向巴士线路连接着城市和城市,它们都有编号从1到MM。巴士线路ii1iM1 \leq i \leq M)从城市UiU_i开往城市ViV_i,票价为CiC_i日元。在巴士线路ii1iM1 \leq i \leq M)上,除了在城市UiU_i乘车和在城市ViV_i下车外,不能在其他地方上车或下车。某些城市之间可能存在多条巴士线路。

JOI国即将举办奥运会。交通部长K决定,在奥运期间选择最多一条巴士线路,并将其行驶方向反转,但不改变票价。也就是说,如果选择了巴士线路ii1iM1 \leq i \leq M),在奥运期间该巴士线路将不再从城市UiU_i开往城市ViV_i,而是从城市ViV_i开往城市UiU_i。然而,巴士线路ii的行驶方向反转需要花费DiD_i日元,这笔费用由K支付。并且,为了避免混乱,在奥运期间不能改变巴士线路的行驶方向。

作为交通部长,K计划在奥运期间往返于城市1和城市N之间乘坐巴士线路。通过明智选择行驶方向反转的巴士线路,他希望最小化往返的总票价与行驶方向反转的费用之和。

给定城市的数量和巴士线路的信息,编写一个程序来找出能够最小化城市1和城市N之间往返的总票价与行驶方向反转费用之和的最小值。如果无论如何都无法往返于城市1和城市N之间,则输出-1。


输入

输入从标准输入读取,具有以下格式。所有输入值都为整数。

NN MM U1U_1 V1V_1 C1C_1 D1D_1 \vdots UMU_M VMV_M CMC_M DMD_M

输出

在标准输出中以一行输出城市1和城市N之间往返的总票价与行驶方向反转费用之和的最小值。但是,如果无论如何都无法往返于城市1和城市N之间,则输出-1。


约束条件

  • 2N2002 \leq N \leq 200
  • 1M50,0001 \leq M \leq 50,000
  • 1UiN1 \leq U_i \leq N (1iM1 \leq i \leq M)。
  • 1ViN1 \leq V_i \leq N (1iM1 \leq i \leq M)。
  • UiViU_i \neq V_i (1iM1 \leq i \leq M)。
  • 0Ci1,000,0000 \leq C_i \leq 1,000,000 (1iM1 \leq i \leq M)。
  • 0Di1,000,000,0000 \leq D_i \leq 1,000,000,000 (1iM1 \leq i \leq M)。

子任务

  1. (5分) M1,000M \leq 1,000
  2. (11分) MM是偶数,U2i1=U2iU_{2i − 1} = U_{2i}V2i1=V2iV_{2i − 1} = V_{2i}C2i1=C2iC_{2i − 1} = C_{2i} (1iM21 \leq i \leq \frac{M}{2})。
  3. (21分) Ci=0C_i = 0 (1iM1 \leq i \leq M)。
  4. (63分) 没有额外的约束条件。

输入例子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,并支付费用1日元,从城市1到城市4的最低票价为6,从城市4到城市1的最低票价为3,城市1和城市4之间往返的总票价与行驶方向反转费用之和为10。

无论如何选择巴士线路,都无法使城市1和城市4之间往返的总票价与行驶方向反转费用之和小于10,因此输出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

该输入输出示例满足子任务2的约束条件。


输入例子3

4 4
1 2 0 4
1 3 0 1
4 3 0 2
4 1 0 1

输出例子3

2

该输入输出示例满足子任务3的约束条件。


输入例子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

在这个输入示例中,有两条巴士线路从城市4到城市3。