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

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

P-꺾은선

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

요약
주어진 n개의 축평행 장애물을 피하면서 A에서 B로 가는 직교 꺾은선의 최소 세그먼트 개수를 구한다.
난이도

어려움10점 중 8점

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

문제

좌표평면에서 두 좌표가 모두 정수인 점을 p-점이라고 한다. p-선분은 좌표축 중 하나와 평행하고 두 끝점이 서로 다른 p-점인 닫힌 선분이다. kk개의 p-선분으로 이루어지고 이웃한 두 선분이 항상 서로 수직인 꺾은선을 차수 kk의 p-꺾은선이라고 한다.

여러 개의 p-선분과 서로 다른 두 p-점 AA, BB가 주어진다. AA와 BB를 잇고 주어진 어떤 p-선분과도 공통점을 갖지 않는 p-꺾은선의 최소 차수를 구하거나, 그러한 p-꺾은선이 존재하지 않음을 판정하여라.

p-꺾은선의 꼭짓점은 임의의 p-점이 될 수 있으며, 입력에 등장하는 좌표로 제한되지 않는다. p-선분의 끝점에서 만나는 것도 공통점으로 간주하므로, p-꺾은선은 모든 p-선분에서 완전히 떨어져 있어야 한다.

입력

첫째 줄에 p-점 AA의 좌표를 나타내는 두 정수 xx, yy (0≤x,y≤1090 \le x, y \le 10^9)가 주어진다. 둘째 줄에 같은 형식으로 p-점 BB의 좌표가 주어진다. 셋째 줄에 p-선분의 개수 nn (1≤n≤501 \le n \le 50)이 주어진다. 이어지는 nn개의 줄에는 각각 한 p-선분의 두 끝점 좌표를 나타내는 네 정수 x1 y1 x2 y2x_1\ y_1\ x_2\ y_2가 주어진다. 각 p-선분은 좌표축과 평행하며 두 끝점은 서로 다르다.

출력

AA와 BB를 잇고 주어진 어떤 p-선분과도 공통점을 갖지 않는 p-꺾은선의 최소 차수를 한 줄에 출력한다. 그러한 p-꺾은선이 존재하지 않으면 대신 BRAK을 출력한다.

예제3

  1. 예제 1

    입력
    1 2
    3 4
    5
    0 0 7 0
    0 5 7 5
    2 2 2 7
    4 0 4 3
    3 2 6 2
    
    예상 출력
    5
    
  2. 예제 2

    입력
    0 0
    5 0
    1
    10 10 10 20
    
    예상 출력
    1
    
  3. 예제 3

    입력
    5 5
    50 50
    4
    0 0 10 0
    0 10 10 10
    0 0 0 10
    10 0 10 10
    
    예상 출력
    BRAK