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

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

불

면접 대비

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

요약
벽과 시작 위치, 불이 있는 격자가 주어질 때, 불이 매초 번지는 상황에서 사람이 지도 밖으로 나갈 수 있는 가장 빠른 시간을 구한다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 큐, 시뮬레이션
정답자
아직 제출이 없습니다

문제

상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀 있다. 건물 곳곳에 불이 났고, 상근이는 탈출을 시도한다.

매초 불은 현재 불이 붙은 각 칸에서 상하좌우로 인접한 빈 공간으로 번진다. 벽에는 불이 옮겨붙지 않는다. 상근이는 매초 상하좌우로 인접한 칸 하나로 이동할 수 있다. 벽을 통과할 수 없고, 이미 불이 번진 칸이나 바로 그 순간에 불이 옮겨붙는 칸으로는 이동할 수 없다. 다만, 자신이 있는 칸에 불이 옮겨붙는 것과 동시에 다른 칸으로 이동하는 것은 가능하다.

상근이가 지도의 경계 바깥으로 나가는 순간 탈출에 성공한 것으로 본다. 건물의 지도가 주어졌을 때, 상근이가 탈출하는 데 걸리는 가장 빠른 시간을 구하여라.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스는 최대 100개이다.

각 테스트 케이스의 첫째 줄에는 지도의 너비 ww와 높이 hh가 주어진다. (1≤w,h≤10001 \le w, h \le 1000)

다음 hh개의 줄에는 각각 ww개의 문자로 이루어진 지도가 주어진다. 각 문자의 의미는 다음과 같다.

  • . : 빈 공간
  • # : 벽
  • @ : 상근이의 시작 위치
  • * : 불

각 지도에서 @는 정확히 한 개이다.

출력

각 테스트 케이스마다 상근이가 건물을 탈출하는 가장 빠른 시간을 한 줄에 하나씩 출력한다. 탈출할 수 없는 경우에는 IMPOSSIBLE을 출력한다.

예제3

  1. 예제 1

    입력
    5
    4 3
    ####
    #*@.
    ####
    7 6
    ###.###
    #*#.#*#
    #.....#
    #.....#
    #..@..#
    #######
    7 4
    ###.###
    #....*#
    #@....#
    .######
    5 5
    .....
    .***.
    .*@*.
    .***.
    .....
    3 3
    ###
    #@#
    ###
    
    예상 출력
    2
    5
    IMPOSSIBLE
    IMPOSSIBLE
    IMPOSSIBLE
    
  2. 예제 2

    입력
    1
    3 3
    ...
    .@.
    ...
    
    예상 출력
    2
    
  3. 예제 3

    입력
    1
    5 5
    .....
    .....
    ..@..
    .....
    ....*
    
    예상 출력
    3