9410 - 翻转棋
时间限制 : 1 秒
内存限制 : 128 MB
FJ 知道,智商高的奶牛产奶量也大,所以他为奶牛们准备了一个翻动瓦片的益智游戏。
在一个 M×N 的方阵上(1≤M,N≤15),每个格子都有一个可以翻转的瓦片。瓦片的一面是黑色,另一面是白色。对一个瓦片翻转,可以让它的颜色由黑到白,或是由白到黑。
然而奶牛们很笨拙,它们翻转一个格子的瓦片时,与其相邻的上下左右的所有瓦片也会翻转(如果有的话)。
现在奶牛们想知道,至少需要多少次翻转,使所有的瓦片都变成白色朝上呢?
输入
第一行两个整数M,N。接下来 M 行,每行 N 个整数,表示初始状态,0 表示白面朝上,1 表示黑面朝上。
输出
如果不能将所有瓦片都翻转为白面朝上的话,输出 ‘IMPOSSIBLE’。
否则输出 M 行,每行 N 个整数,第 i 行的第 j 个数代表第 i 行第 j 列的瓦片被翻转了多少次。
如果存在多种方案,输出字典序最小的方案。这里的字典序最小指将输出中的所有空白字符和换行去掉后,合并成的字符串字典序最小。
样例
输入
4 4 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1
输出
0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0
提示
(1≤M,N≤15)
来源
USACO