#2388. 最少选择使全集覆盖(Minimum Covering Sets)

最少选择使全集覆盖(Minimum Covering Sets)

【题目描述】

有一个大小为 nn 的全集,元素编号为 00n1n-1。现在给出 mm 个集合 S1,S2,,SmS_1, S_2, \dots, S_m,每个集合包含若干个元素,集合通过二进制字符串表示。你的任务是从这 mm 个集合中选择若干个,使得它们的并集正好覆盖全集(即所有 nn 个元素都至少被覆盖一次),并输出需要选择的最少集合数。

如果无法覆盖全集,输出 -1。

【输入格式】

第一行两个整数 n,mn, m1n1001 \le n \le 1001m201 \le m \le 20) 接下来 mm 行,每行一个长度为 nn 的二进制字符串,表示一个集合

【输出格式】

输出一个整数,表示最少需要选择的集合数使得它们的并集是全集,如果无解输出 -1

【输入样例】

5 4
11000
00110
00011
00001

【输出样例】

3