试题库问题

题目描述

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

输入输出格式

输入格式


第一行有两个正整数 $k$ 和 $n$。$k$ 表示题库中试题类型总数,$n$ 表示题库中试题总数。 第二行有 $k$ 个正整数,第 $i$ 个正整数表示要选出的类型 $i$ 的题数。这 $k$ 个数相加就是要选出的总题数 $m$。 接下来的 $n$ 行给出了题库中每个试题的类型信息。每行的第一个正整数 $p$ 表明该题可以属于 $p$ 类,接着的 $p$ 个数是该题所属的类型号。

输出格式


输出共 $k$ 行,第 $i$ 行输出 `i: ` 后接类型 $i$ 的题号。 如果有多个满足要求的方案,只要输出一个方案。 如果问题无解,则输出`No Solution!`。

输入输出样例

输入样例 #1

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: 1 6 8
2: 7 9 10
3: 2 3 4 5

说明

$2\leq k \leq 20$,$k \leq n \leq 10^3$。 --- 感谢 @PhoenixEclipse 提供 spj