만드는 중입니다

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

해리 포터와 벡터 주문

면접 대비

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

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

보통10점 중 6점

유형
그래프, 유니온 파인드, 수학, 그리디
정답자
아직 제출이 없습니다

문제

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

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

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

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

+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⃗=0⃗a_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_i는 ii번째 행에서 0이 아닌 원소의 개수이고, 이어지는 kik_i개의 수는 그 행에서 0이 아닌 열의 번호 cjc_j다 (1≤cj≤N1 \le c_j \le N, j=1,…,kij = 1, \dots, k_i).

  • 1≤N≤1051 \le N \le 10^5
  • 2≤M≤1052 \le M \le 10^5
  • 0≤ki≤N0 \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}이다.

예제2

  1. 예제 1

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

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