SHO(射击竞赛)
欢迎来参加年度的BYTELAND射击竞赛。每个参赛者的射击目标是一个矩形网格。目标由R×C个小方格组成,分别为R行,C列。小方格被涂成白色或黑色。每一列恰有2个白色的小方格和R-2个黑色的小方格。行从顶至底编号依次为1,…,R,列从左至右编号依次为1,…,C。射击者可射击C次。
在连续的C次射击中,若每列恰好有一个白色的方格被射中,且不存在无白色方格被射中的行,这样的射击才是正确的。
请帮助射击者找到一种正确的射击法,若这样的射击法存在。
例子:
考虑以下目标:
1=黑
0=白
1  1  0  0
0  1  1  1
1  0  0  1
0  0  1  0
 
 一连串的射击分别击中第1列的第2行,第2列的第3行,第3列的第1行,第4列的
第4行,这种射击方法是正确的。
任务:
写一个程序:
从文件SHO.IN中读出数据的组数;每组包括针对这一问题的一套数据。
对每组数
读取目标的大小和白色方格的设置;
证明是否存在正确的射击方法,若存在,请找出一种;
将结果写至文件SHO.OUT上。
【输入格式】
[color=0000FF]输入文件SHO.IN:的第一行包括数据的组数X,1≦X≦5,接下来的行由X组组成。第一组从该文件第二行开始,其它各组依次直接接在前一组之后。
每组的首行包括两个整数R和C,被一空格隔开,2≦R≦C≦1000,这分别是矩形网格的行数和列数。该组中接下来的C行,每行包括两个整数,被一空格隔开。[color=FF0000][color=0000FF][color=FF0000][color=0000FF][color=008080][color=0000FF][color=FF0000]每组中的第I+1行的整数(1≦    I≦C),是第I列中白色方格所在的行的标号[/color][/color][/color][/color][/color][/color][/color]。[/color]
【输出格式】
输出文件SHO.OUT对第I组,1≦I≦X,你的程序应将以下内容写至文件SHO.OUT中;或者是由对白色方格的正确的一连串射击,形成的一个由C个行号组成的序列(中间均由1个空格隔开),即在列1,2,…,C上依次被击中的白色方格的行号,或者若不存在这样一种正确的射击法,写上单词NO。
示例:
【输入样例】
2
4 4
2 4
3 4
1 3
1 4
5 5
1 5
2 4
3 4
2 4
2 3
【输出样例】
2 3 1 4
NO










[size=4]我看不懂题目,也不知道方法[/size]