소개
지식 이 풍부한 코드 골퍼 들이 최후의 홍수에 대비해 우리를 준비 시켰습니다 . 위험에 처한 지역은 대피했고, 인구는 고지대로 이동했습니다.
우리는 홍수를 과소 평가했거나 아마도 @ user12345의 코드에 버그가 있었을 것입니다. 일부 고지대는 해수면에 빠르게 접근하고 있습니다. 현재 인구 밀도가 높은 야영지의 생존을 보장하기 위해 벽을 세워야합니다. 안타깝게도 정부는 벽 공급이 제한되어 있습니다.
문제
우리의 종말 시나리오는 한 줄에 두 숫자에 의해 설명되어 n
및 m
. 그 라인 다음에는 라인 당 값 이있는 n
라인이 있으며 m
, 단일 공백으로 만 분리됩니다. 각 값은 4 자 중 하나입니다.
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"에서 읽거나 단일 인수로 허용 될 수 있습니다.
최단 코드 승리!