Introdução
Jogadores experientes em código nos prepararam para o dilúvio do dia do juízo final . As áreas de risco foram evacuadas e a população mudou-se para terrenos altos.
Subestimamos a inundação (ou talvez tenha ocorrido um erro no código do @ user12345). Algumas áreas altas estão se aproximando rapidamente do nível do mar. Muros devem ser erguidos para garantir a sobrevivência dos acampamentos agora densamente povoados. Infelizmente, o governo tem um suprimento limitado de muros.
Problema
Nosso cenário do dia do juízo final é descrito por dois números em uma única linha, n
e m
. Após essa linha, há n
linhas com m
valores por linha, separados apenas por um único espaço. Cada valor será um dos quatro caracteres.
x
Intransitável. A água não pode fluir aqui. Paredes não podem ser erguidas aqui.-
Instável. A água pode fluir através disso aqui. Paredes não podem ser erguidas aqui..
Estável. A água pode fluir por aqui. Paredes podem ser erguidas aqui.o
Acampamento. A água pode fluir por aqui. Se isso acontecer, todo mundo morre. Paredes não podem ser construídas aqui.
A água fluirá de todas as bordas do mapa, a menos que a borda seja intransitável ou uma parede seja construída sobre o ladrilho. Escreva um programa que possa gerar o número mínimo de paredes necessárias para proteger um acampamento.
Exemplo de entrada
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
Saída de exemplo
3
Suposições
- A água flui apenas ortogonalmente
- Acampamentos existem apenas como um bloco ortogonalmente contíguo por cenário
- Uma solução sempre existirá (embora possa exigir grandes quantidades de paredes)
- Acampamentos não podem ser localizados em uma borda, pois o cenário não teria solução
- 2
n
<<16 - 2
m
<<16 - A entrada pode ser fornecida pelo stdin, lida em "city.txt" ou aceita como um único argumento
O menor código vence!