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

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

미로

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

요약
가장자리에 구멍이 정확히 두 개 있는 미로가 주어질 때, 두 구멍을 잇는 최단 경로에 쓰이지 않은 길을 @로 표시해 출력한다.
난이도

보통10점 중 6점

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

문제

크기가 N×MN \times M인 미로가 있다. 미로는 격자 형태이고 .과 +로 이루어져 있다. .은 지나갈 수 있는 길을, +는 지나갈 수 없는 벽을 의미한다. 우리는 미로가 입력으로 주어지면, 미로의 두 구멍을 최단 거리로 연결할 때 지나지 않는 길을 표시할 것이다.

미로의 가장자리에 존재하는 .이 미로의 구멍이다. 항상 두 개만 주어지며, 한 구멍에서 다른 구멍으로 최단 경로로 이동해야 한다. 미로의 두 구멍은 서로 이웃하지 않는다.

두 구멍 사이를 최단 경로로 이동할 때 사용하지 않은 길은 @로 표시해야 한다.

주어진 미로를 최단 거리로 이동할 때 사용하지 않은 길을 찾는 프로그램을 작성하시오.

입력

첫 번째 줄에는 미로의 크기 N,MN, M이 주어진다. (3≤N,M≤2,001(3 \le N, M \le 2,001, N,MN, M은 홀수))

두 번째 줄부터는 미로의 정보가 주어진다. 두 번째 줄부터 NN줄에 거쳐 각 줄에는 길이가 MM이고 .과 +만으로 이루어진 문자열이 주어진다.

같은 지점으로 돌아오는 길이 존재하지 않고, 두 구멍 사이를 이동할 수 있는 미로만 주어진다.

출력

주어진 미로를 최단 거리로 이동하는 데 사용하지 않은 길을 @로 표시한 결과를 출력한다.

예제4

  1. 예제 1

    입력
    7 7
    +++++++
    +.+....
    +.+++.+
    +...+.+
    +.+.+.+
    ..+...+
    +++++++
    
    예상 출력
    +++++++
    +@+@@..
    +@+++.+
    +...+.+
    +.+.+.+
    ..+...+
    +++++++
    
  2. 예제 2

    입력
    7 7
    +++++++
    ......+
    +.+++.+
    +...+.+
    +++.+++
    +......
    +++++++
    
    예상 출력
    +++++++
    ..@@@@+
    +.+++@+
    +...+@+
    +++.+++
    +@@....
    +++++++
    
  3. 예제 3

    입력
    7 7
    +++++++
    ......+
    +++++.+
    +.....+
    +.+++++
    +......
    +++++++
    
    예상 출력
    +++++++
    ......+
    +++++.+
    +.....+
    +.+++++
    +......
    +++++++
    
  4. 예제 4

    입력
    13 11
    +++++++++++
    +.+.....+.+
    +.+.+++.+.+
    +...+.+...+
    +.+++.+.+.+
    +.+...+++.+
    +.+++.+.+.+
    +.......+..
    +.+++++++++
    +.......+.+
    +.+++++++++
    +..........
    +++++++++++
    
    예상 출력
    +++++++++++
    +@+.....+@+
    +@+.+++.+@+
    +...+@+...+
    +.+++@+@+.+
    +.+@@@+++.+
    +.+++@+@+.+
    +.@@@@@@+..
    +.+++++++++
    +.@@@@@@+@+
    +.+++++++++
    +..........
    +++++++++++