#P1719. Shooting Contest
Shooting Contest
描述
欢迎参加一年一度的比特兰射击比赛。每位参赛者都将向一个目标射击,该目标是一个矩形网格。目标由位于 行 列的 个方格组成。这些方格的颜色为白色或黑色。每列恰好有两个白色方格和 个黑色方格。行从上到下依次标记为 ,列从左到右标记为 。射击者有 发子弹。
如果每列恰好命中一个白色方格,并且不存在未被命中白色方格的行,那么 发子弹的一轮射击就是正确的。如果存在这样的正确射击轮次,帮助射击者找到其中一种情况。
示例
考虑以下目标:

在连续的列 、、、 中,命中第 、、、 行白色方格的这一轮射击是正确的。
编写一个程序,用于:验证是否存在任何正确的射击轮次,若存在则找到其中一种。
输入
输入的第一行包含数据块的数量 ,。接下来的行构成 个数据块。第一个数据块从输入文件的第二行开始;每个后续数据块紧跟在前一个数据块之后。
每个数据块的第一行包含两个用单个空格分隔的整数 和 ,。这两个数分别是行数和列数。每个数据块接下来的 行中,每行都包含两个用单个空格分隔的整数。在数据块的输入行 ()中,这两个整数是第 列中白色方格所在行的标记。
输出
对于第 个数据块(),你的程序应在标准输出的第 行上输出一个由 个行标记组成的序列(用单个空格分隔),该序列构成在连续列 、、、 中对白色方格的正确命中情况;若不存在这样的射击轮次,则输出单词 “NO”。
输入数据 1
2
4 4
2 4
3 4
1 3
1 4
5 5
1 5
2 4
3 4
2 4
2 3
输出数据 1
2 3 1 4
NO
来源
CEOI 1997