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

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

아이스링크

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

요약
직각 다각형 장애물이 놓인 정사각형 링크에서 스케이터가 벽에 부딪힐 때까지 미끄러지며 이동할 때, 최소 횟수의 미끄러짐으로 도착점에 닿을 수 있는지 판정한다.
난이도

어려움10점 중 9점

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

문제

바이트랜드에서 가장 큰 정사각형 아이스링크(크기 10000×1000010000 \times 10000) 위에서 스케이팅 대회가 열린다. 선수는 심판이 정한 시작점 START에서 출발해, 역시 심판이 정한 도착점 FINISH에서 멈춰야 한다. 두 점은 서로 다르다.

선수는 링크의 변과 평행한 네 방향 중 하나로만 밀고 나갈 수 있다. 한번 미끄러지기 시작하면 방향을 바꾸거나 마음대로 멈출 수 없고, 진행 방향을 정면으로 막는(진행 방향에 수직인) 장애물의 벽에 부딪힐 때까지 직선으로 계속 미끄러진다. 그 충돌 지점이 한 번의 미끄러짐이 끝나는 곳이다.

링크 위에는 여러 개의 장애물이 있다. 각 장애물은 밑면이 링크의 변과 평행한 변들로 이루어진 다각형인 각기둥이며, 밑면에서 이웃한 두 변은 항상 직각으로 만난다. 서로 다른 장애물은 어떤 점도 공유하지 않는다.

선수는 진행 방향과 평행한 벽을 따라 미끄러질 수 있으며, 경로가 벽의 모서리(끝점)에만 살짝 닿는 경우에는 멈추지 않는다. 만약 어떤 미끄러짐이 선수를 링크 밖으로 내보내게 된다면(앞을 막아 세워 줄 벽이 없다면) 선수는 실격되므로, 그런 미끄러짐은 하지 않는다.

선수는 START에서 정지 상태로 출발하며, 오직 정면의 벽에 부딪혀야만 멈춘다. 어떤 미끄러짐이 정확히 FINISH 점에서 멈출 때 비로소 도착한 것으로 본다. 선수가 START에서 출발해 규칙대로 미끄러져 FINISH에 도달할 수 있는지 판정하고, 도달할 수 있다면 필요한 최소 미끄러짐 횟수를 구하라.

입력

링크 위 물체의 위치는 좌표계로 나타낸다. 링크는 꼭짓점이 (0,0)(0, 0), (10000,0)(10000, 0), (10000,10000)(10000, 10000), (0,10000)(0, 10000)인 정사각형이다.

  • 첫째 줄에 START 점의 좌표인 두 정수 z1z_1, z2z_2가 공백으로 구분되어 주어진다 (0≤z1,z2≤100000 \le z_1, z_2 \le 10000).
  • 둘째 줄에 FINISH 점의 좌표인 두 정수 t1t_1, t2t_2가 주어진다 (0≤t1,t2≤100000 \le t_1, t_2 \le 10000).
  • 셋째 줄에 장애물의 개수 ss가 주어진다 (1≤s≤25001 \le s \le 2500).
  • 이어서 ss개의 장애물 설명이 주어진다. 각 장애물 설명은 그 장애물의 벽(밑면의 변)의 개수인 양의 정수 rr가 적힌 줄로 시작한다. 그다음 rr개의 줄에는 각각 장애물 밑면 꼭짓점의 좌표인 두 정수 xx, yy가 시계 방향으로 주어진다(이 방향으로 밑면을 돌면 내부가 왼쪽에 온다).

모든 장애물의 벽 개수의 합은 1000010000을 넘지 않는다.

출력

한 줄에 다음을 출력한다.

  • START 점에서 FINISH 점으로 갈 수 없으면 NIE(폴란드어로 '아니오')를,
  • 갈 수 있으면 FINISH 점에 도달하기 위한 최소 미끄러짐 횟수를 출력한다.

예제5

  1. 예제 1

    입력
    40 10
    5 40
    3
    6
    0 15
    0 60
    20 60
    20 55
    5 55
    5 15
    12
    30 55
    30 60
    60 60
    60 0
    0 0
    0 5
    55 5
    55 35
    50 35
    50 40
    55 40
    55 55
    6
    30 25
    15 25
    15 30
    35 30
    35 15
    30 15
    
    예상 출력
    4
    
  2. 예제 2

    입력
    10 50
    50 50
    1
    4
    50 10
    50 90
    52 90
    52 10
    
    예상 출력
    1
    
  3. 예제 3

    입력
    50 10
    50 50
    1
    4
    10 50
    10 55
    90 55
    90 50
    
    예상 출력
    1
    
  4. 예제 4

    입력
    10 10
    90 50
    2
    4
    0 50
    0 55
    60 55
    60 50
    4
    90 10
    90 90
    92 90
    92 10
    
    예상 출력
    2
    
  5. 예제 5

    입력
    10 22
    500 500
    1
    4
    20 20
    20 25
    25 25
    25 20
    
    예상 출력
    NIE