포럼
문제 COCI00004

Slikar

설명

사악한 황제 Cactus가 마법의 통을 손에 넣어 마법의 숲을 물바다로 만들어 버렸다! 화가와 세 마리 아기 고슴도치는 물을 피할 수 있는 비버의 굴로 최대한 빨리 돌아가야 한다!

마법의 숲의 지도는 \(R\)개의 행과 \(C\)개의 열로 이루어져 있다. 빈 칸은 문자 .로, 물에 잠긴 칸은 *로, 바위는 X로 표시된다. 또한 비버의 굴은 D로, 화가와 세 마리 아기 고슴도치는 S로 표시된다.

매 분마다 화가와 세 마리 아기 고슴도치는 이웃한 \(4\)개의 칸(위, 아래, 왼쪽, 오른쪽) 중 하나로 이동할 수 있다. 매 분마다 홍수도 퍼져서, 물에 잠긴 칸과 변을 하나 이상 공유하는 모든 빈 칸도 물에 잠긴다. 물도, 화가와 고슴도치도 바위를 통과할 수 없다. 당연히 화가와 고슴도치는 물에 잠긴 칸을 지날 수 없고, 물은 비버의 굴을 잠기게 할 수 없다.

마법의 숲의 지도가 주어졌을 때, 화가와 세 마리 아기 고슴도치가 비버의 굴에 안전하게 도착하는 데 필요한 최단 시간을 출력하는 프로그램을 작성하시오.

참고: 화가와 고슴도치는 (같은 분에) 곧 물에 잠길 칸으로는 이동할 수 없다.

제약
입력 형식

첫째 줄에 두 정수 \(R\)\(C\)가 주어진다. 두 수 모두 \(50\) 이하이다.

다음 \(R\)개의 줄에는 각각 \(C\)개의 문자(., *, X, D 또는 S)가 주어진다. 지도에는 DS가 정확히 하나씩 있다.

출력 형식

화가와 세 마리 아기 고슴도치가 비버의 굴에 안전하게 도착하는 데 필요한 최단 시간을 출력한다. 불가능하다면 KAKTUS라는 단어를 한 줄에 출력한다.

서브태스크
서브태스크점수설명

Subtask 1

50점
예제 1
입력
3 3
D.*
...
.S.
출력
3
예제 2
입력
3 3
D.*
...
..S
출력
KAKTUS
설명

The best they can do is to go along the lower border and then the left border, and get flooded one minute before reaching the den.

예제 3
입력
3 6
D...*.
.X.X..
....S.
출력
6
문제 정보

riseoj 작성

출처 COCI 2006/2007 Contest 1

평가 및 의견

Slikar

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Slikar

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8