Te pedimos que simules la expansión de un derrame de petróleo en el
océano, sabiendo que la mancha se origina en los puntos marcados con una
‘X’, que las casillas con un ‘.’ corresponden
a zonas de mar abierto por las que la mancha puede extenderse a razón de
1 asilla por unidad de tiempo, y que las casillas con un
‘#’ indican barreras por las que la mancha no puede
extenderse.
En el instante de tiempo la mancha (simbolizada por n ‘’) ocupa la casilla origen del derrame, y en cada unidad de tiempo posterior la mancha se expande a las cuatro casillas vecinas de cualquier casilla previamente ocupada.
Cada juego de pruebas está formado por un mapa y diversas preguntas. El mapa se da con una línea con los números y (filas y columnas), seguido de líneas de caracteres cada una con la descripción del mismo. Al menos habrá un origen del derrame, pero puede haber más de uno.
A continuación, una secuencia de líneas, cada una de las cuales con un instante de tiempo . Los tiempos se dan en orden creciente.
Para cada instante de tiempo
,
escribe el mapa con el estado del derrame en el instante de tiempo
,
siguiendo el formato indicado. Separa dos mapas con una cadena de
caracteres ‘=’.
Para obtener 100 puntos, probablemente tendrás que saber qué es un
recorrido en anchura. Es mucho más fácil de lo que parece, especialmente
si aprendes a usar una cola (o ‘queue’).
Habrá 10 grupos de juegos de prueba. Los juegos de prueba del grupo -ésimo tendrán mapas donde serán, como mucho, 3, 5, 8, 10, 20, 40, 60, 100, 250 y 500. No se pedirá escribir más de instantes de tiempo, que nunca serán superiores a . Se dará 10 puntos por cada grupo de juegos de pruebas resuelto.
Input
3 3 ... .X# ... 0 1 2 3
Output
... .*# ... === .*. **# .*. === *** **# *** === *** **# ***
Input
8 6 ....## ####.. ....#. .X..#. ...#.. ###..# ..X#.# ...... 0 4 10 100
Output
....## ####.. ....#. .*..#. ...#.. ###..# ..*#.# ...... ====== ....## ####.. ****#. ****#. ***#.. ###..# ***#*# ****** ====== ....## ####.* ****#* ****#* ***#** ###**# ***#*# ****** ====== ....## ####** ****#* ****#* ***#** ###**# ***#*# ******