해리 포터와 벡터 주문

각 열이 정확히 두 개의 1을 가진 이진 벡터일 때, M×N 행렬의 GF(2) 위에서의 랭크를 구한다.

보통6그래프유니온 파인드수학그리디면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

해리 포터가 혼혈 왕자의 일기에서 또 하나의 이상한 주문을 찾아냈다. 이 주문은 크기가 MM인 이진 벡터를 만들어 낸다. 해리의 실력이 아직 부족해서 주문이 완벽하게 작동하지 않고, 0이 아닌 원소가 정확히 2개인 벡터만 만들어진다.

해리는 이 주문을 NN번 썼고, 만들어진 벡터를 모두 열로 세워 MMNN열 행렬을 만들었다.

마법 행렬 이론 수업에서 교수가 이 행렬의 랭크를 구하라는 문제를 냈다. 해리를 도와주자.

마법 행렬 이론의 연산은 다음 규칙을 따른다.

+01
001
110
×01
000
101

행렬 AA의 랭크는 AA의 열 가운데 선형독립인 열의 최대 개수다. 집합 T={v1,v2,,vk}T = \{\vec{v_1}, \vec{v_2}, \dots, \vec{v_k}\}에 속한 벡터가 선형독립이라는 것은, ai{0,1}a_i \in \{0, 1\}일 때 방정식 a1v1+a2v2++akvk=0a_1\vec{v_1} + a_2\vec{v_2} + \dots + a_k\vec{v_k} = \vec{0}이 성립하는 경우가 a1=a2==ak=0a_1 = a_2 = \dots = a_k = 0뿐이라는 뜻이다.

입력

첫째 줄에 벡터의 크기 MM과 해리가 만든 벡터의 개수 NN이 주어진다.

다음 MM개 줄에는 kik_i, c1c_1, c2c_2, \dots, ckic_{k_i} 형식으로 주어진다. kik_iii번째 행에서 0이 아닌 원소의 개수이고, 이어지는 kik_i개의 수는 그 행에서 0이 아닌 열의 번호 cjc_j다 (1cjN1 \le c_j \le N, j=1,,kij = 1, \dots, k_i).

  • 1N1051 \le N \le 10^5
  • 2M1052 \le M \le 10^5
  • 0kiN0 \le k_i \le N
  • 각 열에는 0이 아닌 원소가 정확히 2개 있다.

출력

첫째 줄에 행렬의 랭크를 출력한다.

힌트

첫 번째 예제에서 해리가 만든 벡터는 세 개다.

v1=(1,1,0),v2=(0,1,1),v3=(1,0,1)\vec{v_1} = (1, 1, 0), \quad \vec{v_2} = (0, 1, 1), \quad \vec{v_3} = (1, 0, 1)

행렬은 다음과 같다.

[101110011]\begin{bmatrix} 1 & 0 & 1 \\ 1 & 1 & 0 \\ 0 & 1 & 1 \end{bmatrix}

그런데 v1+v2+v3=0\vec{v_1} + \vec{v_2} + \vec{v_3} = \vec{0}이다.