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

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

호모토픽 경로

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

요약
점 장애물(나무)이 있는 평면에서 같은 시작점과 끝점을 잇는 두 꺾은선 경로가 나무를 지나지 않고 서로 변형될 수 있는지, 즉 호모토픽인지 판정한다.
난이도

어려움10점 중 8점

유형
기하, 구현, 해시맵, 정렬
정답자
아직 제출이 없습니다

문제

소루시는 새 정원에서 미리 정해 둔 길을 따라 입구에서 출구까지 걸으며 나무 위의 새를 구경한다. 목줄에 묶인 강아지는 같은 길로 가지 않아도 되지만 결국 출구에 도착한다. 정원에는 키 큰 나무만 있고 다른 장애물은 없다. 목줄은 길이가 0부터 얼마든지 늘어나지만 언제나 가능한 가장 짧은 길이가 되려 한다. 소루시와 강아지는 목줄 길이가 0인 채로 입구에서 출발한다. 소루시는 강아지가 갈 길을 미리 알고 있고, 둘이 출구에 도착하는 순간 목줄 길이가 0이 될 수 있는지 궁금하다. 목줄은 나무를 넘어갈 수 없다. 출구에서 목줄 길이가 0이면 소루시의 경로와 강아지의 경로를 호모토픽하다고 한다.

각 경로는 주어진 점을 순서대로 이은 선분의 열이다. 나무는 평면 위의 한 점이고, 두 경로 모두 나무를 지나지 않는다. 두 경로가 호모토픽하다는 것은 양 끝점을 고정한 채 어떤 나무도 넘지 않으면서 한 경로를 다른 경로로 연속적으로 변형할 수 있다는 뜻이다. 주어진 두 경로가 호모토픽한지 판정하는 프로그램을 작성하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 정수 nn, mm, kk가 주어진다 (1≤n≤10001 \le n \le 1000, 0≤m,k≤10000 \le m, k \le 1000). nn은 나무의 수이고, mm과 kk는 각각 소루시의 경로와 강아지의 경로에 있는 중간 정점의 수다. 다음 두 줄에는 입구 ss의 xx, yy 좌표와 출구 tt의 xx, yy 좌표가 이 순서로 주어진다 (s≠ts \neq t). 이어지는 nn개의 줄에는 나무의 xx, yy 좌표가 주어진다. 소루시의 경로를 s,v1,…,vm,ts, v_1, \dots, v_m, t, 강아지의 경로를 s,u1,…,uk,ts, u_1, \dots, u_k, t라고 하면, 그다음 mm개의 줄에 v1v_1부터 vmv_m까지의 좌표가 차례로 오고, 이어지는 kk개의 줄에 u1u_1부터 uku_k까지의 좌표가 차례로 온다.

두 경로는 자기 자신과 교차하거나 서로 교차할 수 있다. ss와 tt를 포함해 두 경로 위에는 나무가 없다. 모든 좌표는 절댓값이 10610^6 이하인 정수다. 입력의 마지막 줄은 0 0 0이며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 두 경로가 호모토픽하면 Yes를, 그렇지 않으면 No를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    2 4 8
    0 2
    7 2
    2 1
    5 1
    6 2
    6 0
    1 0
    1 3
    3 2
    3 0
    1 0
    1 3
    6 3
    6 0
    4 0
    4 2
    1 2 0
    0 0
    10 0
    3 1
    5 1
    1 0
    0 0 0
    
    예상 출력
    No
    Yes
    
  2. 예제 2

    입력
    1 1 1
    0 0
    4 0
    2 0
    2 2
    2 -2
    1 0 0
    0 0
    5 0
    0 3
    0 0 0
    
    예상 출력
    No
    Yes