Wprowadzenie
Doświadczeni golfiści przygotowali nas na potop . Obszary zagrożone zostały ewakuowane, a ludność przeniosła się na wyżyny.
Nie doceniliśmy powodzi (a być może wystąpił błąd w kodzie @ user12345). Niektóre obszary położone na dużych obszarach szybko zbliżają się do poziomu morza. Ściany muszą zostać wzniesione, aby zapewnić przetrwanie gęsto zaludnionych obozowisk. Niestety rząd ma ograniczoną podaż ścian.
Problem
Nasz scenariusz zagłady opisany jest dwoma liczbami w jednym wierszu, noraz m. Po tej linii znajdują się nwiersze z mwartościami na wiersz, oddzielone tylko jedną spacją. Każda wartość będzie miała jeden z czterech znaków.
xNieprzekraczalny. Woda nie może tutaj płynąć. Nie można tutaj wznosić ścian.-Nietrwały. Woda może przez to przepływać. Nie można tutaj wznosić ścian..Stabilny. Woda może tutaj przepływać. Można tutaj wznosić ściany.oObozowisko. Woda może tutaj przepływać. Jeśli tak, wszyscy umierają. Nie można tutaj budować ścian.
Woda będzie płynąć ze wszystkich krawędzi mapy, chyba że krawędź jest nieprzejezdna lub ściana zostanie zbudowana na kafelku. Napisz program, który może wygenerować minimalną liczbę ścian wymaganą do ochrony obozowiska.
Przykładowe dane wejściowe
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
Przykładowy wynik
3
Założenia
- Woda płynie tylko ortogonalnie
- Obozowiska istnieją tylko jako jeden ciągły prostokątny blok na scenariusz
- Rozwiązanie zawsze będzie istnieć (chociaż może wymagać dużej ilości ścian)
- Obozowiska nie mogą być zlokalizowane na krawędzi, ponieważ wtedy scenariusz nie miałby rozwiązania
- 2
n<<16 - 2
m<<16 - Dane wejściowe można podać ze standardowego wejścia, odczytać z „city.txt” lub zaakceptować jako pojedynczy argument
Najkrótszy kod wygrywa!