만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Havannah (작은 입력)

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

요약
육각 보드에 주어진 돌을 순서대로 놓고 링, 브리지, 포크 가운데 처음 완성된 구조와 이동 번호를 보고합니다.
난이도

보통10점 중 5점

유형
유니온 파인드, BFS
정답자
아직 제출이 없습니다

문제

Havannah는 Christian Freeling이 만든 추상 전략 보드게임이다. 한 변에 육각형이 SS개씩 놓인 육각형 판 위에서 진행한다. 육각형마다 가로 변이 2개, 비스듬한 변이 4개 있다. 각 육각형은 정수 두 개의 쌍으로 나타낸다. 판의 아래쪽 꼭짓점에 있는 육각형은 (1,1)(1, 1)이다. (x,y)(x, y)에서 2시 방향으로 이웃한 육각형은 (x,y+1)(x, y+1)이고, 10시 방향으로 이웃한 육각형은 (x+1,y)(x+1, y)이다. 다음은 S=5S = 5인 판이다.

육각형 하나에는 돌을 최대 하나만 놓을 수 있다. 한 번 놓은 돌은 치우지도 옮기지도 않는다. 목표는 아래 세 가지 중 하나에 해당하는, 서로 이어진 돌의 집합을 만드는 것이다.

  • ring: 빈 육각형을 하나 이상 둘러싼다. 둘러싸인 육각형 중 적어도 하나는 비어 있어야 한다. 즉 돌이 놓인 육각형에 막혀서 판의 바깥 경계와 이어지지 않는 빈 육각형이 있어야 한다. 이 규칙은 원래 Havannah 규칙과 다르다.
  • bridge: 판의 꼭짓점 두 곳을 잇는다.
  • fork: 판의 여섯 변 중 세 변을 잇는다. 꼭짓점은 양옆 어느 변에도 속하지 않는다.

다음 그림은 이기는 모양의 예시다.

한 사람이 돌을 놓는 순서가 주어진다. 이 순서가 이기는 모양을 만드는지 판정하는 프로그램을 작성하라. 만든다면 모양의 이름과 그 모양을 완성한 수의 번호를 출력한다. 한 수가 ring을 여러 개 완성하거나, 꼭짓점을 셋 이상 잇거나, 변을 넷 이상 이어도 각각 ring, bridge, fork 하나로 센다. 한 수가 서로 다른 종류의 모양을 동시에 완성하면 그 이름을 모두 출력한다. 처음으로 이기는 수만 보고, 그 뒤의 수는 모두 무시한다. 모든 수를 놓은 뒤에도 이기는 모양이 없으면 none을 출력한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 정수 두 개 SS와 MM이 주어진다. SS는 판 한 변의 육각형 개수이고, MM은 놓는 수의 개수다. 이어지는 MM개의 줄에는 돌을 놓는 순서대로 육각형의 좌표 xx와 yy가 공백으로 구분되어 주어진다. 모든 수는 크기가 SS인 판 위에 있다. 각 테스트 케이스는 빈 판에서 시작하고, 같은 육각형에 두 번 놓는 일은 없다.

제한

  • 1≤T≤2001 \le T \le 200
  • 2≤S≤502 \le S \le 50
  • 0≤M≤1000 \le M \le 100

출력

각 테스트 케이스마다 Case #n: 뒤에 다음 중 하나를 붙여서 한 줄로 출력한다.

  • none
  • bridge in move k
  • fork in move k
  • ring in move k
  • bridge-fork in move k
  • bridge-ring in move k
  • fork-ring in move k
  • bridge-fork-ring in move k

여기서 nn은 테스트 케이스 번호, kk는 이기는 모양을 완성한 수의 번호다. 둘 다 1부터 센다.

힌트

Havannah는 Christian Freeling과 MindSports가 만들었다. Christian Freeling과 MindSports는 이 문제를 보증하지 않으며, 이 문제와 아무런 관련이 없다.

예제1

  1. 예제 1

    입력
    7
    2 4
    1 1
    1 2
    2 3
    3 3
    3 6
    2 1
    2 2
    2 3
    2 4
    1 2
    4 4
    3 7
    3 3
    2 2
    2 3
    3 4
    4 4
    4 3
    3 2
    3 6
    2 2
    2 3
    3 4
    4 4
    4 3
    3 2
    3 8
    1 1
    2 1
    1 3
    2 4
    1 2
    3 2
    3 3
    3 4
    3 7
    1 1
    2 2
    3 5
    3 4
    5 3
    4 3
    3 3
    3 3
    1 1
    1 3
    3 5
    
    예상 출력
    Case #1: bridge in move 2
    Case #2: fork in move 5
    Case #3: none
    Case #4: ring in move 6
    Case #5: bridge-fork in move 5
    Case #6: bridge in move 7
    Case #7: none