#P16133. [ICPC 2018 NAIPC] Rainbow Graph

[ICPC 2018 NAIPC] Rainbow Graph

题目描述

Roy 和 Biv 有一个 nn 个节点的无向图,节点编号为 1n1 \dots n。图中的每条边都有一个权重和一种颜色。权重是正整数。边的颜色恰好有三种:红色(Red)、绿色(Green)和蓝色(Blue)。同一对顶点之间可能存在多条边,图中甚至可能存在自环。

考虑如下任务(固定一个正整数 kk):Roy 和 Biv 希望恰好选择图中的 kk 条边,并删除所有其他边。他们希望这样选择后,仅凭所选出的 kk 条边,两人都能看到整个图是连通的。

然而,问题在于:Roy 看不见红色边,Biv 看不见蓝色边。因此,他们选择边的方式必须满足:仅用蓝色边和绿色边就足以使所有节点连通,并且仅用红色边和绿色边也足以使所有节点连通。对于 kk11 到总边数的每个取值,求出满足上述条件的所有 kk 条边的子集中,边权和的最小值。

输入格式

每个输入包含单个测试用例。请注意,你的程序可能会在不同输入上多次运行。每个测试用例的第一行包含两个整数 nnmm1n,m1001 \leq n, m \leq 100),其中 nn 是图中的节点数,mm 是边数。

接下来的 mm 行,每行包含三个整数和一个字符:aabb1a,bn1 \leq a, b \leq n)、ww1w1,0001 \leq w \leq 1{,}000)和 ccc{R,G,B}c \in \{R, G, B\}),表示节点 aabb 之间有一条权重为 ww、颜色为 cc 的边(R=R= 红色,G=G= 绿色,B=B= 蓝色)。

输出格式

输出 mm 行,每行对应 k=1mk = 1 \dots m 的结果。如果对于某个 kk 无法使 Roy 和 Biv 都看到图是连通的,则输出 1-1;否则,输出满足条件的选择 kk 条边的子集的最小边权和。

5 8
1 5 1 R
2 1 2 R
5 4 5 R
4 5 3 G
1 3 3 G
4 3 5 G
5 4 1 B
1 2 2 B
-1
-1
-1
-1
15
14
17
22

提示

翻译由 DeepSeek V3.2 完成