벌집, 벌집, 벌집을 다오!

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

요약
남아 있는 단위 길이 육각형 벽 선분들을 보고 여섯 개의 벽을 모두 가진 육각형이 몇 개인지 센다.
난이도

어려움10점 중 8점

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

문제

돌풍이 양봉가의 벌통을 쓰러뜨렸다. 하나의 벌통에는 여러 개의 판이 들어 있고, 각 판에는 벌집이 하나씩 들어 있다. 판이 충분히 얇아서 벌들은 각 판에 육각형 방을 한 겹으로만 만들며, 모든 방은 크기가 같은 정육각형이다.

판을 살펴보니 많은 육각형 방이 손상되어 있었다. 아직 온전히 남아 있는 방의 벽(선분)들의 목록이 주어질 때, 손상되지 않은 육각형 방, 즉 여섯 개의 벽이 모두 남아 있는 방의 개수를 구하여라.

손상은 오직 일부 벽이 사라지는 형태로만 일어난다. 어떤 벽도 옮겨지거나 반으로 부러지는 등 다른 방식으로 변형되지는 않는다.

입력

첫째 줄에 데이터 집합의 수를 나타내는 정수 NN (1≤N≤1001 \le N \le 100)이 주어진다.

각 데이터 집합의 첫째 줄에는 그 집합에 포함된 선분의 개수 SS (1≤S≤10001 \le S \le 1000)가 주어진다. 이어지는 SS개의 줄에는 각각 하나의 벽이 X1,Y1 X2,Y2 형식으로 주어진다.

모든 좌표는 0≤X,Y≤10000 \le X, Y \le 1000인 실수이며, 소수점 아래는 최대 3자리이다(천분의 일 단위로 반올림). 좌표는 3.123e+3과 같은 지수 표기를 사용하지 않는다.

다음을 가정할 수 있다.

  • 각 벽의 길이는 정확히 1이다.
  • 벌집의 방향은 항상 같다. 즉, 어떤 방의 위쪽 또는 아래쪽 벽이 남아 있다면 그 벽은 항상 x축과 평행하다.
  • 중복되거나 겹치는 선분은 없다. 선분들은 오직 끝점에서만 서로 닿을 수 있다.

출력

각 데이터 집합에 대해, 손상되지 않은(여섯 개의 벽이 모두 남아 있는) 육각형 방의 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    2
    6
    0.500,1.866 1.500,1.866
    0.000,1.000 0.500,1.866
    1.500,0.134 2.000,1.000
    1.500,1.866 2.000,1.000
    0.500,0.134 1.500,0.134
    0.000,1.000 0.500,0.134
    3
    1.500,1.866 2.000,1.000
    0.500,0.134 1.500,0.134
    0.000,1.000 0.500,0.134
    
    예상 출력
    1
    0
    
  2. 예제 2

    입력
    1
    6
    2.000,3.000 2.500,2.134
    2.000,3.000 2.500,3.866
    2.500,2.134 3.500,2.134
    2.500,3.866 3.500,3.866
    3.500,2.134 4.000,3.000
    3.500,3.866 4.000,3.000
    
    예상 출력
    1