[JOI 2020 Final] オリンピックバス

题目描述

给定一个 $N$ 点 $M$ 边的有向图,每条边从 $U_i$ 指向 $V_i$,经过这条边的代价为 $C_i$。 点编号为 $1$ 到 $N$。 我们可以翻转一条边,即让他从 $U_i$ 指向 $V_i$ 变为从 $V_i$ 指向 $U_i$,这时会有 $D_i$ 的代价产生。 你要从点 $1$ 到点 $N$,再从点 $N$ 回到点 $1$,你想知道,通过翻转一条边,或者不翻转,能得到的最小代价和为多少?

输入输出格式

输入格式


第一行两个整数 $N,M$ 代表点数和边数。 接下来 $M$ 行每行四个整数 $U_i,V_i,C_i,D_i$ 代表一条边。

输出格式


一行一个整数代表最小代价和。无解输出 $-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

说明

### 样例 1 解释 最优解为翻转第二条边,总代价为: - 翻转的代价 $1$。 - 从点 $1$ 到点 $N$ 再返回的最短路径 $1 \to 2 \to 4 \to 3 \to 1$,代价为 $4+2+1+2=9$。 ### 样例 4 解释 不一定需要翻转某条边。 ### 样例 5 解释 从点 $4$ 到点 $3$ 的边有两条。 ### 数据规模与约定 **本题采用捆绑测试。** - Subtask 1(5 pts):$M \le 1000$。 - Subtask 2(11 pts):$M$ 为偶数,且 $U_{2i}=U_{2i-1}$,$V_{2i}=V_{2i-1}$,$C_{2i}=C_{2i-1}$。 - Subtask 3(21 pts):$C_i=0$。 - Subtask 4(63 pts):无特殊限制。 对于 $100\%$ 的数据: - $2 \le N \le 200$。 - $1 \le M \le 5 \times 10^4$。 - $1 \le U_i \le N$。 - $1 \le V_i \le N$。 - $U_i \ne V_i$。 - $0 \le C_i \le 10^6$。 - $0 \le D_i \le 10^9$。 ### 说明 翻译自 [第 19 回日本情報オリンピック 本選](https://www.ioi-jp.org/joi/2019/2020-ho/index.html) [D オリンピックバス](https://www.ioi-jp.org/joi/2019/2020-ho/2020-ho-t4.pdf)。