멋진 오일러 회로

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

요약
선분이 서로 교차할 수 있는 닫힌 오일러 회로의 꼭짓점들이 주어질 때, 이 그림이 평면을 나누는 연결 영역의 개수를 센다.
난이도

보통10점 중 7점

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

문제

어린 Joey는 위대한 수학자의 이름을 따서 Euler라고 부르는 낙서 기계를 만들었다. 초등학교 시절 Joey는 Euler가 그래프 이론을 시작하게 된 유명한 이야기를 들었다. 그 이야기 속 문제는, 펜을 종이에서 떼지 않고 도형을 그린 뒤 마지막에 출발점으로 다시 돌아오는 것이었다. Euler는 이것이 가능한 것은 그린 (평면) 그래프가 다음 두 조건을 만족할 때, 그리고 그때뿐임을 증명했다. (1) 그래프가 연결되어 있고, (2) 모든 정점의 차수가 짝수이다.

Joey의 Euler 기계도 같은 원리로 작동한다. 이 장치는 종이에 닿아 있는 연필 하나와, 명령을 순서대로 내보내는 제어부로 이루어져 있다. 종이는 무한한 2차원 평면이므로 연필이 종이 밖으로 나갈 걱정은 하지 않아도 된다.

첫 번째 명령은 (X0,Y0)(X_0, Y_0) 형태이며 연필을 출발 위치 (X0,Y0)(X_0, Y_0)로 옮긴다. 이후의 각 명령도 (X′,Y′)(X', Y') 형태이며, 연필을 현재 위치에서 새 위치 (X′,Y′)(X', Y')로 옮기면서 선분 하나를 그린다. 새 위치는 항상 직전 위치와 다르다. 마지막 명령은 항상 연필을 출발 위치 (X0,Y0)(X_0, Y_0)로 되돌린다. 또한 이 기계는 이미 그린 선분과 겹쳐지는 선분은 절대 그리지 않지만, 선분들이 서로 교차하는 것은 가능하다.

모든 명령이 끝나면 종이에는 하나의 도형이 남는다. 연필을 한 번도 떼지 않았으므로 이 도형은 오일러 회로가 된다.

그려진 선분들이 종이를 몇 개의 조각(연결된 영역)으로 나누는지 세는 것이 여러분의 과제이다.

입력

입력에는 최대 2525개의 테스트 케이스가 있다. 각 테스트 케이스는 명령의 개수인 정수 N≥4N \ge 4가 적힌 줄로 시작한다. 이어서 명령을 나타내는 NN개의 정수 쌍이 공백 하나로 구분되어 주어지며, 첫 번째 쌍이 출발 위치이다. 각 테스트 케이스의 명령은 최대 300300개이고, 모든 정수 좌표는 (−300,300)(-300, 300) 범위 안에 있다. 각 테스트 케이스의 마지막 명령은 항상 출발 위치와 같아서 회로를 닫는다.

입력은 N=0N = 0이 적힌 줄로 끝나며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 다음 형식으로 한 줄을 출력한다.

Case x: There are w pieces.

여기서 xx는 11부터 시작하는 테스트 케이스 번호이고, ww는 도형이 평면을 나누는 연결된 영역의 개수이다. 도형 바깥의 무한히 넓은 영역 하나도 한 조각으로 센다(따라서 단순한 정사각형의 답은 22이다).

예제3

  1. 예제 1

    입력
    5
    0 0 0 1 1 1 1 0 0 0
    7
    1 1 1 5 2 1 2 5 5 1 3 5 1 1
    0
    
    예상 출력
    Case 1: There are 2 pieces.
    Case 2: There are 5 pieces.
    
  2. 예제 2

    입력
    5
    0 0 0 1 1 1 1 0 0 0
    0
    
    예상 출력
    Case 1: There are 2 pieces.
    
  3. 예제 3

    입력
    4
    0 0 4 0 2 3 0 0
    0
    
    예상 출력
    Case 1: There are 2 pieces.