각 열이 정확히 두 개의 1을 가진 이진 벡터일 때, M×N 행렬의 GF(2) 위에서의 랭크를 구한다.
보통6그래프유니온 파인드수학그리디면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB해리 포터가 혼혈 왕자의 일기에서 또 하나의 이상한 주문을 찾아냈다. 이 주문은 크기가 M인 이진 벡터를 만들어 낸다. 해리의 실력이 아직 부족해서 주문이 완벽하게 작동하지 않고, 0이 아닌 원소가 정확히 2개인 벡터만 만들어진다.
해리는 이 주문을 N번 썼고, 만들어진 벡터를 모두 열로 세워 M행 N열 행렬을 만들었다.
마법 행렬 이론 수업에서 교수가 이 행렬의 랭크를 구하라는 문제를 냈다. 해리를 도와주자.
마법 행렬 이론의 연산은 다음 규칙을 따른다.
| + | 0 | 1 |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 0 |
| × | 0 | 1 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
행렬 A의 랭크는 A의 열 가운데 선형독립인 열의 최대 개수다. 집합 T={v1,v2,…,vk}에 속한 벡터가 선형독립이라는 것은, ai∈{0,1}일 때 방정식 a1v1+a2v2+⋯+akvk=0이 성립하는 경우가 a1=a2=⋯=ak=0뿐이라는 뜻이다.
첫째 줄에 벡터의 크기 M과 해리가 만든 벡터의 개수 N이 주어진다.
다음 M개 줄에는 ki, c1, c2, …, cki 형식으로 주어진다. ki는 i번째 행에서 0이 아닌 원소의 개수이고, 이어지는 ki개의 수는 그 행에서 0이 아닌 열의 번호 cj다 (1≤cj≤N, j=1,…,ki).
첫째 줄에 행렬의 랭크를 출력한다.
첫 번째 예제에서 해리가 만든 벡터는 세 개다.
v1=(1,1,0),v2=(0,1,1),v3=(1,0,1)
행렬은 다음과 같다.
110011101
그런데 v1+v2+v3=0이다.