Logo 邂逅编程之美

UOJ

时间限制:2 s 空间限制:256 MB
Statistics

后文有一个形式化的题意说明。

Hiemal(亚纳尔)级异常:项目是由两个或多个相关但不同的异常组成的相互控制的系统。
Thaumiel(萨麦尔)级异常:被用于收容或抵制其他异常。
Dr.SakuraMiku(这不算角色扮演)在“Keter 任务”中观察到了 T 次异常事件。每一次事件可描述为 n 个 Thaumiel 级“模因”和 m 个 Hiemal 级“逆模因”出现(你不需要知道这是什么),分别从 1 开始编号。对这些异常的不恰当措施可能造成”VK” 现实重组事件。对于第 i 个“模因”,它可以收容的“逆模因”集合为 Ci。已发现 k 个集合,编号为 S1 ∼ Sk。任何一个“逆模因”至多属于一个集合。每一个 Si 都可细分为三个部分,称为 Ti,1, Ti,2, Ti,3(可能存在某个 Si 为空或某个 Ti,j 为空的情况)。
该事件的一种收容方式,定义为一个“模因”与“逆模因”之间的对应关系(一个“模因”必须对应其可以收容的一个“逆模因”或不对应任何“逆模因”),满足不同“模因”对应到不同“逆模因”。此时称一个“逆模因”被收容,当且仅当存在一个“模因”对应到它。
该收容方式有效,当且仅当任意 Si 中存在至少 3 个“逆模因”未被收容,且 Ti,1, Ti,2, Ti,3 中至少2 个集合包含未被收容的“逆模因”。
收容的“逆模因”越多,就越能降低收容失效的风险。现在,Dr.SakuraMiku 想知道一个有效的收容方式最多收容多少个“逆模因”。特别地,若不存在有效的收容方式,输出”VK”(不含引号)。
形式化的题面:T 组数据,给定一张二分图,左边有 n 个点,右边有 m 个点,左边第 i 个点连向的右边点集为 Ci。同时,有 k 个右边的点的集合 S1 ∼ Sk,任意一个右边的点至多属于一个集合 S。每个集合 Si 又被分为三个部分:Ti,1, Ti,2, Ti,3。注意此处任何点集都可能为空。你需要找到满足以下条件的最大匹配:任意一个 Si 中至少 3 个元素没有被匹配到,且 Ti,1, Ti,2, Ti,3 中至少 2 个集合存在未被匹配的元素。特别地,若不存在满足条件的匹配,输出”VK”(不含引号)。
输入格式
第一行一个正整数 T 表示异常事件个数(即数据组数);
以下为 T 组数据,每组数据第一行为三个非负整数 n,m 和 k;以下 n 行,第 i 行开头一个非负整数,表示 |Ci|;之后 |Ci| 个正整数,表示左边点 i 对应的右边的点的集合;之后 m 行,每行 2 个非负整数,第 i 行正整数为 pi, qi,pi = 0 则表示右侧点 i 不在任何一个 S 中;否则表示 i ∈ Spi,且i ∈ Tpi,qi。
输出格式
T 行,每行一个非负整数表示答案,或字符串”VK”(不含引号)。

输入:
1
6 10 2
4 1 2 3 4
5 2 4 5 6 7
5 3 5 7 9 10
6 1 3 5 8 9 10
2 2 7
2 1 10
1 1
2 1
2 1
2 3
2 2
1 2
1 2
1 3
1 2
2 2
输出:
4

数据范围

设 ∑ni=1 |Ci| = C。
对所有数据点,1 ≤ T ≤ 10, 1 ≤ n, m ≤ 2500, 1 ≤ C ≤ 6000, 1 ≤ k ≤ 800。保证数据合法。
子任务 1 (分值: 10)
1 ≤ n, m ≤ 4, 1 ≤ C ≤ 8
子任务 2 (分值: 20)
k = 0
子任务 3 (分值: 10)
对所有 Si,1 ≤ n, m ≤ 650, 1 ≤ C ≤ 1800, |$T_{i,1}$| = |$T_{i,2}$| = 2, $T_{i,3}$ = ∅, k ≤ 5
子任务 4 (分值: 30)
对所有 Si,|$T_{i,1}$| = |$T_{i,2}$| = 2, $T_{i,3}$ = ∅
子任务 5 (分值: 30)
无特殊限制。