치즈 (Cheese)

면접 대비

시간 제한1초메모리 제한256 MB

요약
격자 미로에서 쥐가 경도 1부터 N까지 치즈를 순서대로 먹으며, 각 치즈를 먹을 때마다 힘이 1씩 오를 때 모든 치즈를 먹는 최단 이동 시간을 구한다.
난이도

보통10점 중 4점

유형
BFS, 그래프, 최단 경로, 구현
정답자
아직 제출이 없습니다

문제

올해도 JOI 마을의 치즈 공장이 치즈 생산을 시작하자, 쥐가 굴에서 고개를 내밀었다. JOI 마을은 동서남북으로 구획이 나뉘어 있으며, 각 구획은 굴, 치즈 공장, 장애물, 빈 땅 중 하나이다. 쥐는 굴에서 출발하여 모든 치즈 공장을 방문해 치즈를 하나씩 먹는다.

이 마을에는 NN개의 치즈 공장이 있고, 각 공장은 한 종류의 치즈만 생산한다. 치즈의 굳기는 공장마다 다르며, 굳기 11부터 NN까지의 치즈를 생산하는 공장이 정확히 하나씩 있다.

쥐의 처음 체력은 11이며, 치즈를 하나 먹을 때마다 체력이 11씩 늘어난다. 단, 쥐는 자신의 체력보다 굳기가 큰 치즈는 먹을 수 없다.

쥐는 동서남북으로 인접한 구획으로 11분 만에 이동할 수 있지만, 장애물 구획에는 들어갈 수 없다. 치즈 공장을 치즈를 먹지 않고 지나갈 수도 있다. 모든 치즈를 다 먹는 데 걸리는 최단 시간을 구하는 프로그램을 작성하라. 단, 쥐가 치즈를 먹는 데 걸리는 시간은 무시한다.

입력

입력은 H+1H+1개의 행으로 이루어진다. 첫째 줄에는 세 정수 HH, WW, NN (1≤H≤10001 \le H \le 1000, 1≤W≤10001 \le W \le 1000, 1≤N≤91 \le N \le 9)이 공백으로 구분되어 주어진다. 둘째 줄부터 H+1H+1번째 줄까지 각 줄에는 'S', '1', '2', ..., '9', 'X', '.'로 이루어진 WW개의 문자로 된 문자열이 주어지며, 각 문자는 해당 구획의 상태를 나타낸다. 북쪽에서 ii번째, 서쪽에서 jj번째 구획을 (i,j)(i, j)라 하면 (1≤i≤H1 \le i \le H, 1≤j≤W1 \le j \le W), 제 i+1i+1번째 줄의 jj번째 문자는 구획 (i,j)(i, j)가 굴이면 'S', 장애물이면 'X', 빈 땅이면 '.', 굳기 1,2,…,91, 2, \ldots, 9의 치즈를 생산하는 공장이면 각각 '1', '2', ..., '9'가 된다. 입력에는 굴과 굳기 1,2,…,N1, 2, \ldots, N의 치즈를 생산하는 공장이 각각 하나씩 있다. 나머지 칸은 장애물이거나 빈 땅임이 보장된다. 쥐가 모든 치즈를 먹을 수 있음이 보장된다.

출력

모든 치즈를 다 먹는 데 걸리는 최단 시간(분)을 나타내는 정수를 한 줄에 출력하라.

예제3

  1. 예제 1

    입력
    3 3 1
    S..
    ...
    ..1
    
    예상 출력
    4
    
  2. 예제 2

    입력
    4 5 2
    .X..1
    ....X
    .XX.S
    .2.X.
    
    예상 출력
    12
    
  3. 예제 3

    입력
    10 10 9
    .X...X.S.X
    6..5X..X1X
    ...XXXX..X
    X..9X...X.
    8.X2X..X3X
    ...XX.X4..
    XX....7X..
    X..X..XX..
    X...X.XX..
    ..X.......
    
    예상 출력
    91