은하 제국의 분열

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

요약
3차원 격자 칸 번호와 정해진 순서로 탈퇴하는 왕국들의 칸 목록이 주어질 때, 남은 칸이 두 개 이상의 조각으로 나뉘게 되는 달의 수를 구한다.
난이도

보통10점 중 7점

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

문제

은하계의 넓은 영역을 오랜 세월 지배해 온 거대 제국이 마침내 여러 개의 독립 왕국으로 분열되려 한다. 제국은 매우 정연하게 조직되어 있으며, 가로 nn, 세로 mm, 높이 kk 파섹 크기의 거대한 정육면체 모양을 하고 있다. (nn, mm, kk 의 정확한 값을 아는 사람은 극소수뿐이다.) 통치의 편의를 위해 제국은 n⋅m⋅kn \cdot m \cdot k 개의 작은 영지로 나뉘어 있고, 각 영지는 정확히 11 세제곱 파섹 크기이다.

영지에는 다음과 같이 번호가 매겨진다. 좌표 (x,y,z)(x, y, z) (0≤x<n0 \le x < n, 0≤y<m0 \le y < m, 0≤z<k0 \le z < k) 에 위치한 영지의 번호는

x+n⋅y+n⋅m⋅zx + n \cdot y + n \cdot m \cdot z

이다. 따라서 번호는 00 부터 n⋅m⋅k−1n \cdot m \cdot k - 1 까지이며, xx 가 가장 빨리 증가하고 그다음 yy, 마지막으로 zz 가 증가한다. 두 영지는 하나의 면을 공유할 때, 즉 세 좌표 중 정확히 하나가 11 만큼 차이나고 나머지 두 좌표가 같을 때 서로 인접(이웃)한다.

제국은 ll 개의 독립 왕국으로 나뉜다. 각 왕국은 면을 공유하여 서로 연결된 하나 이상의 영지들의 집합이며, ll 개의 왕국은 n⋅m⋅kn \cdot m \cdot k 개의 모든 영지를 빠짐없이, 겹치지 않게 나눈다. 여러 달에 걸쳐 매달 정확히 하나의 왕국이 주어진 순서대로(1번 왕국이 먼저, 그다음 2번, ...) 제국에서 분리 독립한다. ii 번째 달의 첫날에 ii 번 왕국이 제국을 떠난다. 각 분리 이후 남은 제국은 아직 분리하지 않은 왕국들의 합집합이다.

분열이 진행되는 동안, 남은 제국이 연결이 끊긴 달(즉 남은 영지들이 둘 이상의 서로 연결된 조각으로 나뉜 달)이 총 몇 번인지 구하여라. 남은 제국이 비어 있거나 하나의 조각으로 이어져 있으면 연결되어 있는 것으로 본다.

입력

첫째 줄에 테스트 케이스의 수 TT 가 주어진다.

각 테스트 케이스의 첫째 줄에는 네 정수 n m k ln\ m\ k\ l 이 주어진다 (1≤n,m,k≤301 \le n, m, k \le 30, ll 은 왕국의 수). 이어지는 ll 개의 줄은 분리하는 순서대로 각 왕국을 설명하며, 각 줄은 p d1 d2 … dpp\ d_1\ d_2\ \dots\ d_p 형태이다. 여기서 pp (1≤p≤201 \le p \le 20) 는 왕국을 이루는 영지의 수이고 d1,…,dpd_1, \dots, d_p 는 그 영지들의 번호이다. ll 개의 왕국은 n⋅m⋅kn \cdot m \cdot k 개의 모든 영지를 빠짐없이 나눈다.

출력

각 테스트 케이스마다, 남은 제국의 연결이 끊겨 있던 달의 수를 한 정수로 한 줄에 출력한다.

예제4

  1. 예제 1

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

    입력
    1
    1 1 1 1
    1 0
    
    예상 출력
    0
    
  3. 예제 3

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

    입력
    1
    1 1 3 3
    1 0
    1 1
    1 2
    
    예상 출력
    0