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, ne m. Após essa linha, há nlinhas com mvalores por linha, separados apenas por um único espaço. Cada valor será um dos quatro caracteres.
xIntransitá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.oAcampamento. 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!