luogu#P13869. [SWERC 2020] Fantasmagorie
[SWERC 2020] Fantasmagorie
背景
:::align{center}

:::
题目描述
Émile 的梦境中,经常出现人或动物变形为其他形态的场景。Émile 希望将他梦境中迷人的世界展示给大家,于是打算制作第一部动画片,当然是黑白的。在醒来之后,Émile 只记得梦中出现的初始形态和最终形态,而变形的过程他已经忘记了,因此他希望你能够重现这些“变形”,详细描述从第一幅图像变换到第二幅图像的步骤。
Émile 梦中的图像不是随意的黑白图像,它们满足以下三个约束条件。首先,图像的边界上的所有像素——最左和最右的列,以及最上和最下的行——颜色相同。其次,图像中不包含任何形状如下的 正方形:
:::align{center}
或
。
:::
第三个约束更复杂,可以描述如下。将图像划分为区域,定义为图像中连通的同色区域,即它们形成像素的最细划分,使得任何两个相邻且同色的像素属于同一区域。如果两个区域包含相邻的像素,则认为它们相邻。在 Émile 的图像中,每个区域最多与两个其他区域相邻,而包含边界像素的区域最多只与一个其他区域相邻。
你将得到两幅大小相同的 的黑白图像,你的目标是找到一个从第一幅图像到第二幅图像的“变形”。从图像 到图像 的变形是一系列图像,其要求如下:
- 序列以 开始,以 结束;
- 每幅图像(除了第一幅)可以通过翻转一个像素而从前一幅图像得到;
- 每幅图像都必须满足上述三个约束;
- 在变形过程中,每种颜色的区域数量不得变化。
输入格式
输入的第一行包含两个空格分隔的整数: 和 。
随后是 行,按行从上到下描述第一幅图像。每行由 个字符组成,描述该行的 个像素,从左到右:
- 若第 个像素为白色,则字符为
.; - 若第 个像素为黑色,则字符为
#。
最后是 行,按相同格式描述第二幅图像。
输出格式
如果不存在可行的变形,输出一行单独的单词 IMPOSSIBLE。否则,输出一种可能的变形方式:
如果第 幅图像是通过翻转第 幅图像中列 、行 的像素得到的( 且 ,其中 表示最左列, 表示最上行),则第 行输出 。
4 3
....
.#..
....
....
..#.
....
2 1
1 1
9 12
.........
...###...
...#.#...
.#######.
...###...
...###...
.#..#....
.#######.
...###.#.
...###...
..##.##..
.........
.........
..#####..
..##.##..
..#...#..
..#.#.#..
..#...#..
..#####..
...#.#...
...#.#...
...#.#...
.###.###.
.........
IMPOSSIBLE
提示
所有测试点满足以下限制:
- ;
- ;
- Émile 的第一幅图像和最后一幅图像是不同的;
- 输出的像素翻转次数不超过 次。