#P1192. 双色巡环

    ID: 204 传统题 1000ms 128MiB 尝试: 0 已通过: 0难度: 提高 ← 上一题 下一题 → 随机一题 上传者: 标签 图论 最短路 Dijkstra 枚举
显示设置

双色巡环

题目背景

临港区把城区道路分成了两类:一类是早年间铺下的干道,编号为 00;另一类是后来沿干道补出来的支线,编号为 11。两类道路都是单向通行的。

巡检队的骑手每天要跑一圈:从任意一个路口出发,先去程只走 00 类干道,回程只走 11 类支线,最后回到出发的那个路口。去程和回程都必须真的走出至少一条路。调度员想知道,这样一圈最少要跑多少距离。

题目描述

给定一张 nn 个点、mm 条有向弧的图。第 ii 条弧从 uiu_i 指向 viv_i,长度为 wiw_i(wi≥0w_i \ge 0),颜色为 ci∈{0,1}c_i \in \{0, 1\}。

一条巡逻走法是一条从某个顶点出发、沿着弧依次行走、最终回到该顶点的走法(顶点与弧都允许重复经过)。把这条走法经过的弧按经过顺序写成一列,就得到一串颜色。称这条走法是合规的,当且仅当可以选取走法的出发点,使得这串颜色形如

$$\underbrace{0\,0\,\cdots\,0}_{a \text{ 条},\, a \ge 1}\ \underbrace{1\,1\,\cdots\,1}_{b \text{ 条},\, b \ge 1}$$

也就是说:整条走法恰好由一段非空的 00 色弧段和一段非空的 11 色弧段接成,而且 00 色在前、11 色在后。

请求出一条合规走法的弧长总和的最小值。如果不存在任何合规走法,输出 -1。

输入格式

第一行两个整数 n,mn, m。

接下来 mm 行,每行四个整数 ui,vi,wi,ciu_i, v_i, w_i, c_i,描述第 ii 条弧。

输出格式

一行一个整数,表示合规走法弧长总和的最小值;若不存在这样的走法,输出 -1。

输入输出样例 #1

输入 #1

3 3
1 2 4 0
2 3 5 1
3 1 6 1

输出 #1

15

输入输出样例 #2

输入 #2

2 2
1 2 1 0
2 1 1 0

输出 #2

-1

输入输出样例 #3

输入 #3

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

输出 #3

4

说明

样例解释

样例 1:从 11 号点出发,依次走 1→21 \to 2(00 色,长 44)、2→32 \to 3(11 色,长 55)、3→13 \to 1(11 色,长 66),颜色序列是 0,1,10,1,1,符合要求,总长 1515。图里只有一条 00 色弧,去程非空就必须用它,因此这一圈无法更短。

样例 2:两条弧都是 00 色,任何走法的颜色序列里都不会出现 11,故不存在合规走法。

样例 3:从 22 号点出发,依次走 2→12 \to 1(00 色,长 11)、1→21 \to 2(00 色,长 11)、2→32 \to 3(11 色,长 11)、3→23 \to 2(11 色,长 11),颜色序列是 0,0,1,10,0,1,1,符合要求,总长 44;也只有在 22 号点附近这两条弧上往返才能凑出这样的走法,故答案为 44。

数据范围

  • 对于 30%30\% 的数据,1≤n≤101 \le n \le 10,1≤m≤501 \le m \le 50;
  • 对于 60%60\% 的数据,1≤n≤1001 \le n \le 100,1≤m≤5001 \le m \le 500;
  • 对于 100%100\% 的数据,1≤n≤4001 \le n \le 400,1≤m≤20001 \le m \le 2000,0≤wi≤1090 \le w_i \le 10^{9},ci∈{0,1}c_i \in \{0, 1\}。

保证不存在 ui=viu_i = v_i 的弧;两点之间可以有多条弧。若答案存在,答案不超过 101210^{12}。