문

면접 대비

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

요약
폭 10, 높이 10인 정사각형 방 안에 두 개의 출입구가 있는 수직 벽이 최대 18개 있을 때, (0,5)에서 (10,5)까지 벽의 막힌 부분을 지나지 않는 최단 경로의 길이를 구한다.
난이도

어려움10점 중 8점

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

문제

장애물 벽이 있는 방을 가로지르는 최단 경로의 길이를 구한다.

방은 x=0x = 0, x=10x = 10, y=0y = 0, y=10y = 10을 변으로 하는 정사각형이다. 모든 경로는 (0,5)(0, 5)에서 시작해 (10,5)(10, 5)에서 끝난다.

방 내부에는 00개에서 1818개의 수직 벽이 있으며, 각 벽에는 통과할 수 있는 출입구가 정확히 두 개씩 있다. 벽은 두 출입구를 제외한 나머지 부분이 모두 막혀 있다. 아래 그림은 이러한 방과 그 안의 최단 경로 하나를 보여 준다.

그림

어떤 벽의 막힌 부분도 지나지 않으면서 (0,5)(0, 5)에서 (10,5)(10, 5)까지 가는 최단 경로의 길이를 구하여라.

입력

입력은 여러 개의 방으로 이루어진다.

각 방은 내부 벽의 개수 nn (0≤n≤180 \le n \le 18)이 적힌 줄로 시작하고, 이어서 벽마다 한 줄씩 총 nn개의 줄이 온다. 각 벽 줄에는 다섯 개의 실수가 있다.

  • 벽의 xx 좌표 (0<x<100 < x < 10), 그리고
  • 두 출입구의 끝점을 나타내는 네 개의 yy 좌표 y1<y2<y3<y4y_1 < y_2 < y_3 < y_4.

벽은 [0,y1][0, y_1], [y2,y3][y_2, y_3], [y4,10][y_4, 10] 구간에서 막혀 있고, 두 출입구 [y1,y2][y_1, y_2]와 [y3,y4][y_3, y_4]에서 열려 있다.

한 방의 벽들은 xx의 오름차순으로 주어지며, 한 줄 안의 네 yy 좌표도 오름차순이다.

벽의 개수 자리에 −1-1이 있는 줄이 나오면 입력이 끝난다.

출력

각 방마다 최단 경로의 길이를 한 줄에 출력한다. 소수점 아래 정확히 두 자리까지 반올림하여, 두 자리가 00이더라도 항상 표시한다. 줄에는 공백이 없어야 한다.

예제3

  1. 예제 1

    입력
    1
    5 4 6 7 8
    2 
    4 2 7 8 9
    7 3 4.5 6 7
    -1
    
    예상 출력
    10.00
    10.06
    
  2. 예제 2

    입력
    0
    -1
    
    예상 출력
    10.00
    
  3. 예제 3

    입력
    1
    3 4 6 7 8
    -1
    
    예상 출력
    10.00