Se te da el mapa de un laberinto, donde las casillas marcadas con un ‘#’ son paredes, y las marcadas con un ‘.’ son espacios vacíos. Partiendo de una casilla inicial vacía ‘A’, se te pide que explores por el laberinto siguiendo el siguiente proceso, conocido como BFS (Breadth-First Search, o búsqueda en anchura):
Se te pide que hagas un programa que encuentre a qué distancia en pasos está cada casilla. Para hacerlo, te resultará útil utilizar una estructura de datos como una cola (‘queue’), donde puedes acumular las casillas que encuentres a distancia n+1 mientras estudias las casillas que están a distancia n.
Entrada
La entrada consiste de una línea con un número k≥ 0, seguido de k casos. Cada caso empieza con una línea con las dimensiones n (filas) y m (columnas) del mapa, seguida de n filas de m caracteres ‘#’ y ‘.’ con la descripción del mapa, y un único carácter ‘A’ con la posición inicial.
Salida
Para cada caso, escribe el mapa usando exactamente d caracteres para cada casilla, donde d es el mínimo número de dígitos necesario para representar todos los números de pasos posibles (por ejemplo, si la casilla más lejana a la que llegas está a 103 pasos de distancia, entonces d=3). Si la casilla es una pared, escribe ‘X’ d veces; si la casillas está vacía pero no es posible llegar a ella, escribe ‘.’ d veces; de otro mod, escribe el número de pasos necesarios para llegar a ella usando exactamente d dígitos (añade ceros a la izquierda si es necesario). Por último, escribe un espacio entre cada par de casillas de la misma fila. Fíjate en los ejemplos para salir de dudas.
Separa dos casos de pruebas con una línea con 3 asteriscos (‘***’).
Puntuación
Entradas con k≤ 100 y n,m ≤ 10, y donde todas las casillas situadas en los bordes del mapa son paredes (‘#’), como el Ejemplo 1.
Entradas con k≤ 10 y n,m ≤ 200, con mapas de todo tipo, como el Ejemplo 2.
Input
5 5 6 ###### #....# #.#A.# ###.## ###### 5 10 ########## #........# ###......# #.#.A#...# ########## 4 9 ######### #..###### ###...#A# ######### 7 9 ######### #....#..# #..#..#.# #...#...# #....#..# #.A.#...# ######### 5 10 ########## #.#..#.### #.##.A#..# #...#...## ##########
Output
# # # # # # # 3 2 1 2 # # 4 # 0 1 # # # # 1 # # # # # # # # *** # # # # # # # # # # # 5 4 3 2 3 4 5 6 # # # # 2 1 2 3 4 5 # # . # 1 0 # 4 5 6 # # # # # # # # # # # *** # # # # # # # # # # . . # # # # # # # # # . . . # 0 # # # # # # # # # # *** ## ## ## ## ## ## ## ## ## ## 05 04 05 06 ## 14 13 ## ## 04 03 ## 07 08 ## 12 ## ## 03 02 03 ## 09 10 11 ## ## 02 01 02 03 ## 11 12 ## ## 01 00 01 ## 13 12 13 ## ## ## ## ## ## ## ## ## ## *** # # # # # # # # # # # . # 3 2 # . # # # # . # # 1 0 # 4 5 # # . . . # 1 2 3 # # # # # # # # # # # #
Input
1 9 18 ....#..#.......... ...#....###...###. ....####...##...#. ...#.......##..##. ..#....#...#..#..# ..#.A..#....##.... ..#......##.....#. #..#.#.....#...#.. ....#.......###...
Output
.. .. .. .. ## .. .. ## .. .. .. .. .. .. .. .. .. .. .. .. .. ## .. .. .. .. ## ## ## .. .. .. ## ## ## .. .. .. .. .. ## ## ## ## 07 08 09 ## ## .. .. .. ## .. .. .. .. ## 02 03 04 05 06 07 08 ## ## .. .. ## ## .. .. .. ## 02 01 02 03 ## 07 08 09 ## .. .. ## 16 17 ## .. .. ## 01 00 01 02 ## 06 07 08 09 ## ## 14 15 16 17 .. .. ## 02 01 02 03 04 05 ## ## 10 11 12 13 14 ## 18 ## .. .. ## 02 ## 04 05 06 07 08 ## 12 13 14 ## 20 19 .. .. .. .. ## 06 05 06 07 08 09 10 ## ## ## 22 21 20