6877 - 5.1.2Starry Night 夜空繁星

高高的星空,簇簇闪耀的群星形态万千.一个星座(cluster)是一群连通的星组成的非空集合,所谓连通是指水平,垂直或者对角相邻.一个星座不能是另一个更大星座的一部分.星座可以相似(similar).如果两个星座有相同的形状,而且包括相同数目的星体,那么不管其方向性如何,就算相似.一般而言,星座可能的方向有八个,如图所示.

15658356044883.png

夜空可以表示为一份天体图(sky map),它是一个由字符 0 和 1 组成的二维矩阵,字符 1 表示所在的位置有一颗星;字符 0 表示该位置上没有星.

任务: 给定一份天体图,用同一个小写英文标识(mark)相似的所有星座.相似的星座必须用相同的

字母标识为不同的字母.

标识一个星座,就是将其中各星体对应的字符 1 替换为相应的小写字母.

输入

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

个字符.

输出

输出文件记录了天体图与文件 starry.in 相似,不同

之处在于,各个星座按照“任务”中的要求进行了标

识(mark).

15658356483633.png

样例

输入

23 
15 
10001000000000010000000 
01111100011111000101101 
01000000010001000111111 
00000000010101000101111 
00000111010001000000000 
00001001011111000000000 
10000001000000000000000 
00101000000111110010000 
00001000000100010011111 
00000001110101010100010 
00000100110100010000000 
00010001110111110000000 
00100001110000000100000 
00001000100001000100101 
00000001110001000111000

输出

a000a0000000000b0000000 
0aaaaa000ccccc000d0dd0d 
0a0000000c000c000dddddd 
000000000c0b0c000d0dddd 
00000eee0c000c000000000 
0000e00e0ccccc000000000 
b000000e000000000000000 
00b0f000000ccccc00a0000 
0000f000000c000c00aaaaa 
0000000ddd0c0b0c0a000a0 
00000b00dd0c000c0000000 
000g000ddd0ccccc0000000 
00g0000ddd0000000e00000 
0000b000d0000f000e00e0b 
0000000ddd000f000eee000 
这是上述输入实例的一个可能的结果.请注意,该输出文件对应于右上的天空景象.

提示

Constraints

0 <= W (天体图的宽度) <= 100

0 <= H (天体图的深度) <= 100

0 <= 星座的数目 <= 500

0 <= 不相似的星座数目 <= 26 (a..z)

1 <= 各星座包含的星体数目 <= 160

来源

USACO

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题