[中山市选2010]简单数谜
数谜(Kakuro)是一种与填字游戏类似的数字谜题。游戏需要在所有空格中填入 到 的数字,使每一栏中数字之和满足对应的提示,并且同一栏内不能出现重复数字。其中,“栏”是指水平方向或竖直方向上连续的一组空格,提示格不属于空格。
本题需要解决一种简化后的数谜。一个简单数谜由一个 的矩形构成:第一行给出各列的和,第一列给出各行的和,左上角的格子忽略不计,其余 个格子均需要填入数字。因此,每一行和每一列中的数字都不能重复,并且数字之和必须分别等于对应的行要求和列要求。
部分格子可能已经填入数字。你需要在保留这些数字的前提下完成整个数谜,并判断其解是否唯一。
输入格式
输入包含多组测试数据。
第一行包含一个正整数 ,表示测试数据的组数。
对于每组测试数据:
- 第一行包含两个整数 和 ,表示数谜内部区域的行数和列数;
- 第二行包含 个整数,依次表示各行的和;
- 第三行包含 个整数,依次表示各列的和;
- 接下来 行,每行包含 个小于 的非负整数,表示当前的填数情况。其中, 表示该格尚未填入数字,其他数字表示已经填好的数字。
输出格式
对于每组测试数据:
- 如果数谜恰好有一个解,输出这个解,共 行,每行输出 个数字;
- 如果数谜有多个解,输出一行
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.
数据范围
- ,;
- 每个格子中输入的数均为小于 的非负整数;
- 每组测试数据中,尚未填入数字的格子不超过 个。
来源与许可
本题为中山市选 试题「简单数谜」,题面与测试数据整理自 BZOJ 2469。
样例 1
输入
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.