#P16021. [ICPC 2021 NAC] The King' s Guards

[ICPC 2021 NAC] The King' s Guards

题目描述

在某个王国中,国王希望部署守卫来保护他的子民。他招募了若干名守卫,并为他们配备了重甲,以抵御强盗、外邦骑士以及其他不法之徒。他的守卫虽然勇猛,但遗憾的是他们并不聪明,会攻击任何穿着盔甲的人,甚至包括其他守卫!

王国由若干村庄组成,村庄之间由道路相连。所有道路的质量都很差,有些泥泞不堪,有些桥梁摇摇欲坠。没有一条道路能承受身着全副盔甲的守卫通行。因此,国王必须决定修缮哪些道路,以便他的守卫能够抵达整个王国。道路是双向的。每名守卫只能被部署到王国中某个特定子集的村庄中。

国王需要在满足以下若干约束条件的前提下,最小化修缮道路的总成本:

  • 每名守卫都必须被部署,不能有守卫闲置。
  • 每名守卫必须被部署到其允许部署的村庄子集内。
  • 每个村庄必须恰好被一名守卫所覆盖(即可以到达)。如果有两名守卫能够互相到达,他们就会发生冲突。

请帮助国王确定在满足上述约束条件的前提下,修缮道路所需的最小总成本。

输入格式

输入的第一行包含三个整数 nn1n3001 \le n \le 300)、rr0rn(n1)20 \le r \le \frac{n(n-1)}{2})和 gg1gn1 \le g \le n),其中 nn 是村庄的数量,rr 是道路的数量,gg 是守卫的数量。村庄的编号为 11nn

接下来的 rr 行,每行包含三个整数 aabb1a<bn1 \le a < b \le n)和 cc1c1,0001 \le c \le 1{,}000)。每行描述一条连接村庄 aa 和村庄 bb 的道路,修缮该道路的成本为 cc。这些道路是双向的,守卫可以从 aa 走到 bb 或从 bb 走到 aa。每对村庄之间至多有一条道路。

接下来的 gg 行,每行首先有一个整数 kk1kn1 \le k \le n),随后跟着 kk 个整数 vv1vn1 \le v \le n)。每行描述某一名守卫可以被部署的村庄子集。不同守卫的子集之间可能有重叠。

输出格式

输出一个整数,表示国王为了满足所有约束条件而需要修缮的道路的最小总成本。如果无法以任何方式部署守卫使得所有约束同时满足,则输出 1-1

5 6 2
1 2 1
1 3 4
2 4 2
2 5 5
3 4 7
4 5 3
2 1 2
2 2 4
8

提示

翻译由 DeepSeek V3.2 完成