무덤 탐험가
시간 제한3초메모리 제한512 MB
거울과 장애물이 있는 격자에서 모든 석상의 면이 다른 석상의 면을 볼 수 있도록 회전해야 하는 석상의 최소 개수를 구합니다.
문제
후(Hu)는 새로운 무덤에 들어갔다. 무덤 안은 가고일, 거울, 장애물로 가득하다. 보물을 지키는 문이 있고, 후는 이 문을 열어야 한다. 문에는 고대 문자로 문을 여는 비밀이 적혀 있다.
모든 가고일의 모든 면은 다른 가고일의 면 하나를 보아야 한다.
즉, 가고일을 돌려서 각 가고일의 면마다 빛의 경로가 생기고, 그 경로가 다른 가고일의 면과 이어져야 한다. 자기 자신의 면과 이어져도 된다. 빛은 거울에서 반사될 수 있다.
무덤의 바닥 지도는 n×m 격자이다.
.은 빈 칸이다.#은 장애물이다./와\는 양면 거울이다.V는 위와 아래를 향한 두 면을 가진 가고일이다.H는 왼쪽과 오른쪽을 향한 두 면을 가진 가고일이다.
무덤은 \와 / 거울 외에도 거울 벽으로 둘러싸여 있다. 빛에 대해 다음을 가정한다.
- 빛은 빈 칸을 직선으로 지난다.
- 두 빛줄기는 서로 간섭하지 않고 교차할 수 있다.
\거울은 위, 아래, 왼쪽, 오른쪽에서 오는 빛을 각각 오른쪽, 왼쪽, 아래, 위로 반사한다./거울은 위, 아래, 왼쪽, 오른쪽에서 오는 빛을 각각 왼쪽, 오른쪽, 위, 아래로 반사한다.- 벽은 모두 거울이므로, 빛이 벽에 닿으면 180도 반사된다.
- 빛은 장애물과 가고일에 막힌다.
후는 임의의 가고일을 90도 회전시킬 수 있다. 시간이 부족한 후는 보물 문을 열기 위해 회전해야 하는 가고일의 최소 개수를 알고 싶어 한다.
입력
첫 줄에는 무덤의 크기를 나타내는 공백으로 구분된 두 정수 n과 m이 주어진다 (). 이어서 n줄에 걸쳐 길이가 m인 문자열 s가 한 줄씩 주어지며, 위에서 설명한 문자로 바닥 지도를 나타낸다. ()
출력
문을 열기 위해 회전해야 하는 가고일 개수의 최솟값을 한 정수로 출력한다. 퍼즐을 풀 수 없으면 을 출력한다.
힌트
위 그림은 첫 번째 입출력 예의 초기 상태(왼쪽)와 해(오른쪽)를 나타낸다. 가고일 3개를 회전하면 퍼즐이 풀린다.
