Introducción
Conocidos códigos de golfistas nos prepararon para la inundación del fin del mundo . Las áreas en riesgo fueron evacuadas y la población se trasladó a terreno elevado.
Subestimamos la inundación (o tal vez hubo un error en el código de @ user12345). Algunas áreas de tierras altas se están acercando rápidamente al nivel del mar. Deben erigirse muros para garantizar la supervivencia de los campamentos ahora densamente poblados. Lamentablemente, el gobierno tiene un suministro limitado de muros.
Problema
Nuestro escenario del fin del mundo se describe con dos números en una sola línea, ny m. Después de esa línea hay nlíneas con mvalores por línea, separadas solo por un espacio único. Cada valor será uno de cuatro caracteres.
xInfranqueable. El agua no puede fluir aquí. Las paredes no se pueden erigir aquí.-Inestable. El agua puede fluir a través de esto aquí. Las paredes no se pueden erigir aquí..Estable. El agua puede fluir por aquí. Las paredes se pueden erigir aquí.oCampamento. El agua puede fluir por aquí. Si lo hace, todos mueren. Los muros no se pueden construir aquí.
El agua fluirá desde todos los bordes del mapa, a menos que el borde sea intransitable o se construya un muro en el azulejo. Escriba un programa que pueda generar la cantidad mínima de muros necesarios para proteger un campamento.
Entrada de ejemplo
6 7
x . . x x x x
x . . x - - x
x . x x - - x
x . o o o - .
x . o o o - .
x x x x x x x
Salida de ejemplo
3
Supuestos
- El agua solo fluye ortogonalmente
- Los campamentos solo existen como un bloque contiguo ortonagonalmente por escenario
- Siempre existirá una solución (aunque puede requerir grandes cantidades de paredes)
- Los campamentos no se pueden ubicar en un borde, ya que el escenario no tendría solución
- 2
n<<16 - 2
m<<16 - La entrada puede proporcionarse desde stdin, leerse desde "city.txt" o aceptarse como un argumento único
¡El código más corto gana!