#C1559. J10 实践-2 简单数谜

J10 实践-2 简单数谜

J10 实践-2 简单数谜

题目描述

数谜是数独的更大(且更难)的兄弟问题,而且在日本也是非常受欢迎的。 数谜问题和填字游戏类似,不过它要填的不是文字而是数字。数谜游戏的目标是用 191-9 填满所有空格,且这些数字相加的和满足相应的要求(或者称为“提示”),且在同一栏(“栏”是指一些水平或者竖直的连续的空格,用于提示的格子不算空格)不能填重复的数字。当所有格子按要求被填满后,这个数谜就看作被解决了。 图1和图2是一个可能的数谜游戏示例。

82.jpeg

当然,直接求解数谜问题的话会比较困难。所以现在我们需要解决的是一个更简单的数谜问题。简单数谜的形状是一个 (n+1)(n+1) 行乘 (m+1)(m+1) 列的矩形。而简单数谜也只有两种要求,就是行要求和列要求,且分别处于第一行和第一列,其他格子则是空格,而左上角是忽略不计的。 佩奇爱好简单数谜,他已经给一些简单数谜填好了其中的一些空格。现在,他想寻求你的帮助,来帮他完成这些简单数谜。如图33所示,2299 是佩奇已经填好的空格,图44则是一个基于图33的一个可能的解答。

输入格式

第一行包含一个正整数 TT,表示测试数据数目。 每组数据第一行是 nnmm ,表示数谜的形状的大小。 接下来一行有 nn 个整数,是相应的行要求; 然后一行是 mm 个整数,是相应的列要求。 接下来的 nn 行每行有 mm 个小于 1010 的非负整数, 00 表示该空格还没有被填数字,其他表示佩奇已经填好的数字。 输入数据保证未填数字的空格不会超过 1616 个。

输出格式

对于每组测试数据,输出若干行。 如果基于佩奇已填的结果,该数谜只有一个解,则输出该解; 如果不止一个解,则输出一行“Not unique.”; 如果没有解,则输出一行 “No answer.”

样例输入

3
3 3
6 6 6
6 6 6
0 0 0
0 3 0
0 0 0
2 3
10 17
5 16 6
2 0 0
0 9 0
2 2
3 5
4 4
0 0
0 0

样例输出

Not unique.
2 7 1
3 9 5
No answer.

样例分析

如上所述。

数据范围

对于 100%100\% 的数据:1n,m101 \le n,m \le 10