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

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

게임

면접 대비

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

요약
격자 위 두 말 사이에 다른 말을 지나지 않는 직교 경로가 있는지 판정하고, 있다면 필요한 최소 직선 구간 수를 구한다.
난이도

보통10점 중 6점

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

문제

어느 날 아침, 잠에서 깨어 이렇게 생각합니다. "나는 정말 뛰어난 프로그래머야. 이 실력으로 돈을 좀 벌어보면 어떨까?" 그래서 컴퓨터 게임을 하나 만들기로 합니다.

게임은 가로 ww칸, 세로 hh칸으로 이루어진 직사각형 판 위에서 진행됩니다. 각 칸에는 게임 말이 놓여 있을 수도 있고, 놓여 있지 않을 수도 있습니다.

이 게임의 핵심은 두 게임 말을 다음 두 조건을 모두 만족하는 경로로 이을 수 있는지를 판단하는 것입니다.

  1. 경로는 여러 개의 직선 구간으로 이루어지며, 각 구간은 수평 또는 수직 방향이다.
  2. 경로는 다른 게임 말이 놓인 칸을 지나가지 않는다.

경로는 판 바깥으로 잠시 벗어나도 됩니다.

예를 들어, 두 말을 잇는 어떤 경로가 다른 말을 하나도 지나지 않으면 두 말은 연결할 수 있고, 어떤 경로를 그리더라도 반드시 다른 말을 지나야 한다면 두 말은 연결할 수 없습니다.

여러분이 만들어야 할 부분은 위 규칙에 따라 두 게임 말을 연결할 수 있는지, 그리고 연결할 수 있다면 필요한 직선 구간의 최소 개수가 몇 개인지를 판정하는 것입니다.

입력

입력은 서로 다른 여러 게임 상황에 대한 설명으로 이루어져 있습니다.

각 게임 상황의 첫 줄에는 두 정수 ww와 hh (1≤w,h≤751 \le w, h \le 75)가 주어지며, 각각 판의 가로와 세로 크기입니다. 이어지는 hh개의 줄은 판의 내용을 나타내며, 각 줄은 정확히 ww개의 문자로 이루어집니다. 해당 칸에 게임 말이 있으면 문자 X, 없으면 공백 문자입니다.

판의 설명 다음에는 네 정수 x1,y1,x2,y2x_1, y_1, x_2, y_2 (1≤x1,x2≤w1 \le x_1, x_2 \le w, 1≤y1,y2≤h1 \le y_1, y_2 \le h)로 이루어진 줄이 여러 개 이어집니다. 이는 두 게임 말의 좌표이며, 왼쪽 위 모서리의 좌표가 (1,1)(1, 1)입니다. 주어지는 두 게임 말은 항상 서로 다르고, 두 칸에는 모두 게임 말이 놓여 있습니다. 한 판에 대한 게임 말 쌍의 목록은 0 0 0 0으로만 이루어진 줄로 끝납니다.

전체 입력은 w=h=0w = h = 0인 게임 상황으로 끝나며, 이 상황은 처리하지 않습니다.

출력

각 판마다 먼저 Board #n: 줄을 출력합니다. 여기서 nn은 판의 번호입니다(1부터 시작). 그런 다음 그 판에 주어진 각 게임 말 쌍마다 한 줄씩 출력합니다. 각 줄은 Pair m: 로 시작하며, mm은 그 판에서의 쌍 번호입니다(각 판마다 1부터 다시 셉니다). 이어서 두 말을 잇는 경로에 필요한 직선 구간의 최소 개수를 kk라 할 때 k segments.를 출력하고, 위 규칙대로 연결할 수 없으면 impossible.을 출력합니다.

서로 이웃한 두 판의 출력 사이에는 빈 줄을 하나 넣습니다.

예제4

  1. 예제 1

    입력
    5 4
    XXXXX
    X   X
    XXX X
     XXX 
    2 3 5 3
    1 3 4 4
    2 3 3 4
    0 0 0 0
    0 0
    
    예상 출력
    Board #1:
    Pair 1: 4 segments.
    Pair 2: 3 segments.
    Pair 3: impossible.
    
  2. 예제 2

    입력
    2 1
    XX
    1 1 2 1
    0 0 0 0
    0 0
    
    예상 출력
    Board #1:
    Pair 1: 1 segments.
    
  3. 예제 3

    입력
    3 3
    XXX
    XXX
    XXX
    1 1 3 3
    0 0 0 0
    0 0
    
    예상 출력
    Board #1:
    Pair 1: 4 segments.
    
  4. 예제 4

    입력
    2 2
    X 
     X
    1 1 2 2
    0 0 0 0
    0 0
    
    예상 출력
    Board #1:
    Pair 1: 2 segments.