#329. 试题库问题

试题库问题

题目描述

假设一个试题库中有n\red {n}道试题。每道试题都标明了所属类别。同一道题可能有多个类别 属性。现要从题库中抽取m\red {m} 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个 满足要求的组卷算法。 编程任务: 对于给定的组卷要求,计算满足要求的组卷方案。

输入格式

由文件input.txt\red {input.txt}提供输入数据。文件第1\red {1}行有2\red {2}个正整数k\red {k}n(2<=k<=20,k<=n<=1000)\red {n (2 <=k<= 20, k<=n<= 1000)} k\red {k} 表示题库中试题类型总数,n\red {n} 表示题库中试题总数。第2\red {2} 行有k\red {k} 个正整数,第i\red {i }个正整数 表示要选出的类型i\red {i} 的题数。这k\red {k}个数相加就是要选出的总题数m\red {m}。接下来的n\red {n}行给出了题 库中每个试题的类型信息。每行的第1\red {1} 个正整数p\red {p}表明该题可以属于p\red {p}类,接着的p\red {p}个数是 该题所属的类型号。

输出格式

程序运行结束时,将组卷方案输出到文件output.txt\red {output.txt} 中。文件第i\red {i} 行输出i:”\red { “i:”}后接类 型i\red {i}的题号。如果有多个满足要求的方案,只要输出1\red {1} 个方案。如果问题无解,则输出“No Solution!”

样例

输入样例

3 15
3 3 4
2 1 2
1 3
1 3
1 3
1 3
3 1 2 3
2 2 3
2 1 3
1 2
1 2
2 1 2
2 1 3
2 1 2
1 1
3 1 2 3

输出样例

1: 1 6 8
2: 7 9 10
3: 2 3 4 5