아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

던전

시간 제한2초메모리 제한1024 MB

요약
여러 시작 칸 중 하나에서 출발하는 플레이어가 시작 칸을 모를 때, 지뢰를 밟지 않고 확실히 얻을 수 있는 동전의 최대 개수를 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 그래프, BFS, 동적 계획법
정답자
아직 제출이 없습니다

문제

Dungeon Crawl: Paper Soup가 최근 가장 인기 있는 게임이 되었고, 여러분도 이 게임을 해 볼 참이다. 게임은 NN행 MM열의 직사각형 필드에서 진행된다. 각 칸은 다음 중 하나이다.

  • 빈 칸 ‘.’
  • 벽 ‘#’
  • 동전 칸 ‘o’
  • 폭발 지뢰 칸 ‘X’
  • 시작 칸 ‘S’

첫 행과 마지막 행, 첫 열과 마지막 열에는 벽만 있다. 플레이어는 벽 칸을 통과해 이동할 수 없다. 필드에는 시작 칸이 하나 이상 있다. 게임이 시작되면 플레이어는 ‘S’로 표시된 시작 칸 중 하나에 놓인다.

이 던전은 시야가 제한되어 있다. 플레이어는 현재 위치를 중심으로 한 3×33 \times 3 정사각형만 볼 수 있다. 플레이어에게 지뢰 칸과 시작 칸은 빈 칸처럼 보인다.

한 번의 이동으로 북, 남, 동, 서 방향의 인접한 칸 중 한 곳으로 갈 수 있다. 플레이어가 동전 칸에 들어가면 동전을 모으고 그 동전은 사라진다. 플레이어가 폭발 지뢰 칸에 들어가면 던전이 무너지고, 플레이어는 그때까지 모은 동전을 모두 잃은 채 게임이 끝난다.

여러 온라인 공략 글을 뒤져서 이 던전의 지도를 구했다. 플레이어가 어느 시작 칸에서 출발할지는 알 수 없지만, 플레이어는 반드시 시작 칸 중 하나에서 출발한다. 시작 위치를 모르는 상태에서 최적으로 플레이할 때, 반드시 얻을 수 있는 동전의 최대 개수는 얼마인가?

입력

첫 줄에 지도의 행 수 NN과 열 수 MM이 주어진다. 다음 NN개의 줄에는 위에서 설명한 표기법에 따라 각 줄마다 MM개의 문자로 지도가 주어진다.

출력

시작 위치를 모르는 상태에서 이 지도에서 반드시 얻을 수 있는 동전의 최대 개수를 한 개의 수로 출력한다.

제한

SS를 지도 위에서 가능한 시작 칸의 개수라고 하자.

N≤400N ≤ 400, M≤400M ≤ 400, S≤60S ≤ 60.

예제5

  1. 예제 1

    입력
    3 7
    #######
    #Soooo#
    #######
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3 8
    ########
    #SoXooS#
    ########
    
    예상 출력
    1
    
  3. 예제 3

    입력
    7 18
    ##################
    #................#
    #.o...SX.......o.#
    #.o...X..X.....o.#
    #.o.....XS.....o.#
    #................#
    ##################
    
    예상 출력
    0
    
  4. 예제 4

    입력
    7 18
    ##################
    #....#...........#
    #.o...SX.......o.#
    #.o...X..X.....o.#
    #.o.....XS.....o.#
    #.........#......#
    ##################
    
    예상 출력
    6
    
  5. 예제 5

    입력
    7 18
    ##################
    #......X..S....oo#
    ##################
    #..o..S.X......o.#
    ##########X#######
    #o.....S...X.....#
    ##################
    
    예상 출력
    1