introduzione
I golfisti esperti di codice ci hanno preparato per l'alluvione del giorno del giudizio . Le aree a rischio sono state evacuate e la popolazione si è spostata su un'altura.
Abbiamo sottovalutato il diluvio (o forse c'era un bug nel codice di @ user12345). Alcune aree d'altura si stanno avvicinando rapidamente al livello del mare. Le pareti devono essere erette per garantire la sopravvivenza degli accampamenti ora densamente popolati. Purtroppo, il governo ha un numero limitato di mura.
Problema
Il nostro scenario del giorno del giudizio è descritto da due numeri su una sola riga ne m. Seguendo quella linea ci sono nlinee con mvalori per linea, separate solo da un singolo spazio. Ogni valore sarà composto da uno di quattro caratteri.
xImpraticabili. L'acqua non può scorrere qui. Le pareti non possono essere erette qui.-Instabile. L'acqua può scorrere attraverso questo qui. Le pareti non possono essere erette qui..Stabile. L'acqua può scorrere qui. Le pareti possono essere erette qui.oAccampamento. L'acqua può scorrere qui. Se lo fa, tutti muoiono. Le mura non possono essere costruite qui.
L'acqua scorrerà da tutti i bordi della mappa, a meno che il bordo non sia impraticabile o non sia costruito un muro sulla piastrella. Scrivi un programma in grado di produrre il numero minimo di pareti richiesto per proteggere un accampamento.
Esempio di input
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
Esempio di output
3
ipotesi
- L'acqua scorre solo ortogonalmente
- Gli accampamenti esistono solo come un blocco contiguo ortogonalmente per scenario
- Una soluzione esisterà sempre (anche se potrebbe richiedere abbondanti quantità di muri)
- Gli accampamenti non possono essere posizionati su un bordo, poiché lo scenario non avrebbe quindi soluzione
- 2
n<<16 - 2
m<<16 - L'input può essere fornito da stdin, letto da "city.txt" o accettato come singolo argomento
Vince il codice più corto!