Введение
Знающие код гольфисты подготовили нас к потопу конца света . Районы, подверженные риску, были эвакуированы, и население переместилось на возвышенность.
Мы недооценили поток (или, возможно, была ошибка в коде @ user12345). Некоторые высокогорные районы стремительно приближаются к уровню моря. Стены должны быть возведены, чтобы обеспечить выживание ныне густонаселенных лагерей. К сожалению, правительство имеет ограниченный запас стен.
проблема
Наш сценарий конца света описывается двумя числами в одной строке, n
и m
. После этой строки идут n
строки со m
значениями в строке, разделенные только одним пробелом. Каждое значение будет одним из четырех символов.
x
Непроходимое. Вода не может течь здесь. Стены не могут быть возведены здесь.-
Нестабильный. Вода может течь через это здесь. Стены не могут быть возведены здесь..
Стабильная. Вода может течь здесь. Стены могут быть возведены здесь.o
Лагерь. Вода может течь здесь. Если это произойдет, все умрут. Стены не могут быть построены здесь.
Вода будет течь со всех краев карты, если только этот край непроходим, или на плитке не построена стена. Напишите программу, которая может выводить минимальное количество стен, необходимое для защиты лагеря.
Пример ввода
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
Пример вывода
3
Предположения
- Вода течет только ортогонально
- Лагеря существуют только как один ортогонально непрерывный блок на сценарий
- Решение всегда будет существовать (хотя для этого может потребоваться большое количество стен)
- Лагеря не могут быть расположены на краю, так как сценарий не будет иметь решения
- 2
n
<<16 - 2
m
<<16 - Входные данные могут быть предоставлены из stdin, прочитаны из «city.txt» или приняты как один аргумент
Самый короткий код выигрывает!