Responsive image

问题 1664 --[USACO 5.1.2]夜空繁星

1664: [USACO 5.1.2]夜空繁星

时间限制: 1 Sec  内存限制: 64 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

高高的星空,簇簇闪耀的群星形态万千。一个星座(cluster)是一群连通的星组成的非空集合,所谓连通是指水平,垂直或者对角相邻。一个星座不能是另一个更大星座的一部分。 星座可以相似(similar)。如果两个星座有相同的形状,而且包括相同数目的星体,那么不管其方向性如何,就算相似。一般而言,星座可能的方向有八个,如图1所示。 图1 相似的八个星座 夜空可以表示为一份天体图(sky map),它是一个由字符0和1组成的二维矩阵,字符1表示所在的位置有一颗星;字符0表示该位置上没有星。 任务 给定一份天体图,用同一个小写英文标识(mark)相似的所有星座。相似的星座必须用相同的字母标识为不同的字母。 标识一个星座,就是将其中各星体对应的字符1替换为相应的小写字母。

输入描述

文件的前两行分别记录了天体图的宽度W、深度H。而天体图则是由接下来的H行表示,每行包括W个字符。

输出描述

输出文件记录了天体图与文件STARRY.IN相似,不同之处在于,各个星座按照“任务”中的要求进行了标识(mark)。

样例输入

23
15
10001000000000010000000
01111100011111000101101
01000000010001000111111
00000000010101000101111
00000111010001000000000
00001001011111000000000
10000001000000000000000
00101000000111110010000
00001000000100010011111
00000001110101010100010
00000100110100010000000
00010001110111110000000
00100001110000000100000
00001000100001000100101
00000001110001000111000
<img src="/JudgeOnline/images/Problem_Pic/1135/2.bmp">
图2. 天空景象

样例输出

a000a0000000000b0000000
0aaaaa000ccccc000d0dd0d
0a0000000c000c000dddddd
000000000c0b0c000d0dddd
00000eee0c000c000000000
0000e00e0ccccc000000000
b000000e000000000000000
00b0f000000ccccc00a0000
0000f000000c000c00aaaaa
0000000ddd0c0b0c0a000a0
00000b00dd0c000c0000000
000g000ddd0ccccc0000000
00g0000ddd0000000e00000
0000b000d0000f000e00e0b
0000000ddd000f000eee000

这是上述输入实例的一个可能的结果。请注意,该输出文件对应于下面的天空景象。

<img src="/JudgeOnline/images/Problem_Pic/1135/3.bmp">
图 3. 星座标识后的天体图

提示

0 <= W (天体图的宽度) <= 100 0 <= H (天体图的深度) <= 100 0 <= 星座的数目 <= 500 0 <= 不相似的星座数目 <= 26 (a..z) 1 <= 各星座包含的星体数目 <= 160

来源

[提交][状态]
ACM算法攻关部