Laberinto (5): BFS

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+1n+1 mientras estudias las casillas que están a distancia nn.

Entrada

La entrada consiste de una línea con un número k0k\geq 0, seguido de kk casos. Cada caso empieza con una línea con las dimensiones nn (filas) y mm (columnas) del mapa, seguida de nn filas de mm 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 dd caracteres para cada casilla, donde dd 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=3d=3). Si la casilla es una pared, escribe ‘Xdd veces; si la casillas está vacía pero no es posible llegar a ella, escribe ‘.dd veces; de otro mod, escribe el número de pasos necesarios para llegar a ella usando exactamente dd 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

Información del problema

Autoría: Omer Giménez

Generación: 2026-01-25T10:17:28.702Z

© Jutge.org, 2006–2026.
https://jutge.org