bzoj#P4405. [WC2016] 挑战 NPC

[WC2016] 挑战 NPC

题目描述

小 N 最近在研究 NP 完全问题,小 O 看小 N 研究得热火朝天,便给他出了一道这样的题目:

nn 个球,用整数 11nn 编号。还有 mm 个筐子,用整数 11mm 编号。每个筐子最多能装 33 个球。

每个球只能放进特定的筐子中。 具体有 ee 个条件,第 ii 个条件用两个整数 viv_iuiu_i 描述,表示编号为 viv_i 的球可以放进编号为 uiu_i 的筐子中。

每个球都必须放进一个筐子中。如果一个筐子内有不超过 11 个球,那么我们称这样的筐子为半空的。

求半空的筐子最多有多少个,以及在最优方案中, 每个球分别放在哪个筐子中。

小 N 看到题目后瞬间没了思路,站在旁边看热闹的小 I 嘿嘿一笑:“水题!”

然后三言两语道出了一个多项式算法。

小 N 瞬间就惊呆了,三秒钟后他回过神来一拍桌子:“不对!这个问题显然是 NP 完全问题,你算法肯定有错!”

小 I 浅笑:“所以,等我领图灵奖吧!”

小 O 只会出题不会做题,所以找到了你——请你对这个问题进行探究,并写一个程序解决此题。

输入格式

第一行包含 11 个正整数 TT, 表示有 TT 组数据。

对于每组数据,第一行包含 33 个正整数 n,m,en, m, e, 表示球的个数,筐子的个数和条件的个数。

接下来 ee 行,每行包含 22 个整数 vi,uiv_i, u_i, 表示编号为 viv_i 的球可以放进编号为 uiu_i 的筐子。

输出格式

对于每组数据,输出一行,包含一个整数,表示半空的筐子最多有多少个。

1
4 3 6
1 1
2 1
2 2
3 2
3 3
4 3
2

数据规模与约定

对于所有数据, T5,1n3mT \leq 5, 1 \leq n \leq 3m。 保证 1vin,1uim1 \leq v_i \leq n, 1 \leq u_i \leq m,且不会出现重复的条件。

保证至少有一种合法方案,使得每个球都放进了筐子,且每个筐子内球的个数不超过 33

各测试点满足以下约定:

测试点 mm 约定
11 10\le 10 n20,e25n\le 20, e \le 25
22
33 100\le 100 e=mne=mn
44 存在方案使得有 mm 个半空的筐子
55 不存在有半空的筐子的方案
66
77
88
99
1010