#B. 最短来回

    Type: Default 1000ms 256MiB

最短来回

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

最短来回

题目描述

给定一个 NN 个顶点 MM 条边的有向图,每条边从 UiU_i 指向 ViV_i,经过这条边的代价为 CiC_i

我们可以翻转一条边,即让他从 UiU_i 指向 ViV_i 变为从 ViV_i 指向 UiU_i,代价为 DiD_i 。最多可以翻转一条边。

你要从点 11 到点 NN,再从点 NN 回到点 11,你想知道,通过翻转一条边,或者不翻转,能得到的最小代价和为多少?

注意数据范围。

输入格式

第一行两个整数 N,MN,M 代表点数和边数。

接下来 MM 行每行四个整数 Ui,Vi,Ci,DiU_i,V_i,C_i,D_i 代表一条边。

输出格式

一行一个整数代表最小代价和。无解输出 1-1

样例 #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

样例输入 #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

样例输入 #3

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

样例输出 #3

2

样例 #4

样例输入 #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

样例输入 #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 解释

最优解为翻转第二条边,总代价为:

  • 翻转的代价 11
  • 从点 11 到点 NN 再返回的最短路径 124311 \to 2 \to 4 \to 3 \to 1,代价为 4+2+1+2=94+2+1+2=9

样例 4 解释

不一定需要翻转某条边。

样例 5 解释

从点 44 到点 33 的边有两条。

数据规模与约定

对于 100%100\% 的数据:

  • 2N2002 \le N \le 200

  • 1M5×1041 \le M \le 5 \times 10^4

  • 1UiN1 \le U_i \le N

  • 1ViN1 \le V_i \le N

  • UiViU_i \ne V_i

  • 0Ci1060 \le C_i \le 10^6

  • 0Di1090 \le D_i \le 10^9

  • 子任务 1(5 分):M1000M \le 1000

  • 子任务 2(11 分):MM 为偶数,且 U2i=U2i1U_{2i}=U_{2i-1}V2i=V2i1V_{2i}=V_{2i-1}C2i=C2i1C_{2i}=C_{2i-1}

  • 子任务 3(21 分):Ci=0C_i=0

  • 子任务 4(63 分):无特殊限制。

20241126集训

Not Attended
Status
Done
Rule
IOI
Problem
2
Start at
2024-11-26 19:00
End at
2024-11-26 21:00
Duration
2 hour(s)
Host
Partic.
31