[网络流24题]试题库问题
题号:NC213904
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

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

输入描述:

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

输出描述:

第 i 行输出 “i:”后接类型 i 的题号。如果有多个满足要求的方案,只要输出 1 个方案。如果问题无解,则输出“NoSolution!”。
示例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 6 8
2: 7 9 10
3: 2 3 4 5