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

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

연결

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

요약
제한된 보드에 번갈아 놓은 트윅스트 말 중 마지막 수가 놓은 쪽의 양쪽 끝 구역을 잇는 연결 경로를 완성하는지 판정한다.
난이도

보통10점 중 7점

유형
그래프, 유니온 파인드, 시뮬레이션, 기하
정답자
아직 제출이 없습니다

문제

보드 게임 트위스트(Twixt)에서 주어진 수순의 마지막 수가 승리하는 수인지 판정하세요.

이 버전에서는 보드 크기가 달라질 수 있습니다. 말(peg)은 [0,N][0, N] 범위의 정수 좌표에 놓입니다. 두 플레이어 흑(Black)과 백(White)은 각자 자기 색의 말을 사용합니다. 항상 흑이 먼저 두고, 이후 두 플레이어가 번갈아 가며 비어 있는 위치 (x,y)(x, y) 하나에 말을 하나씩 놓습니다.

흑의 목표선(endzone)은 x=0x = 0 또는 x=Nx = N인 직선이고, 백의 목표선은 y=0y = 0 또는 y=Ny = N인 직선입니다. 어느 플레이어도 상대의 목표선 위에는 말을 놓을 수 없습니다.

매 수마다, 방금 놓은 말은 체스 나이트의 이동(한 좌표로 22칸, 다른 좌표로 11칸 떨어진 위치)만큼 떨어진 같은 색 말 각각과 선분으로 연결됩니다. 단, 새 선분이 이미 그어진 어떤 선분과도 공유하는 끝점을 제외하고는 닿지 않아야 합니다. 새 선분이 (색과 무관하게) 기존 선분과 교차하거나 겹친다면 그 선분은 긋지 않습니다.

승리하는 수가 나오면 대국이 끝납니다. 승리하는 수란, 그 수로 인해 어떤 플레이어의 선분들이 그 플레이어의 두 목표선을 잇는 연결된 경로를 처음으로 완성하는 수입니다.

예를 들어 N=4N = 4인 보드에서 (0,2)(0,2), (2,4)(2,4), (4,2)(4,2), (3,2)(3,2)를 둔 뒤, 흑이 (2,3)(2,3)을 두는 것은 나쁜 수이지만 대신 (2,1)(2,1)을 두면 승리합니다. 또 다른 예로 N=7N = 7인 보드에서 흑은 11수 만에 승리합니다: (0,3)(0,3), (6,5)(6,5), (3,2)(3,2), (5,7)(5,7), (7,2)(7,2), (4,4)(4,4), (5,3)(5,3), (5,2)(5,2), (4,5)(4,5), (4,0)(4,0), (2,4)(2,4).

입력

입력은 1개 이상 20개 이하의 데이터셋으로 이루어지며, 마지막에는 두 개의 0만 있는 줄 0 0이 옵니다.

각 데이터셋의 첫 줄에는 최대 좌표 NN과 전체 수의 개수 MM이 주어집니다. 이때 3<N<213 < N < 21, 4<M<2504 < M < 250이며 MM은 홀수입니다. 데이터셋의 나머지 부분에는 MM개의 좌표 쌍이 한 줄에 한 쌍 이상씩 주어지고, 모든 수는 공백으로 구분됩니다.

MM이 홀수이므로 항상 흑이 마지막 수를 둡니다. 모든 입력은 규칙에 맞으며, 마지막 수 이전에 승리하는 수가 나오는 경우는 없습니다.

출력

각 데이터셋마다, 마지막 수가 승리하는 수이면 yes를, 그렇지 않으면 no를 한 줄에 출력하세요.

예제3

  1. 예제 1

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

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

    입력
    4 5
    0 2 1 1 2 1 3 3 4 2
    0 0
    
    예상 출력
    yes