만드는 중입니다

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

논리 연쇄

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

요약
방향 그래프에서 하루에 간선을 최대 10개씩 뒤집은 뒤, 서로 도달할 수 있는 정점 쌍의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 비트 연산, 행렬
정답자
아직 제출이 없습니다

문제

처음 보는 문제를 만나면 대개 익숙한 무언가가 떠오릅니다. 그러면 또 다른 것들이 차례로 떠오릅니다. 이것을 논리 연쇄라고 합니다. 루쉰의 작품에서도 이 현상이 묘사되어 있습니다.

개념은 1,2,…,n1, 2, \ldots, n으로 번호가 붙은 nn개입니다. 리틀 Q의 머릿속은 n×nn \times n 이진 행렬 gg로 나타낼 수 있습니다. 리틀 Q가 개념 ii를 접했을 때 개념 jj가 떠오르면 gi,j=1g_{i,j} = 1이고, 그렇지 않으면 gi,j=0g_{i,j} = 0입니다. 서로 다른 두 개념 uu와 vv에 대해, uu가 직접 또는 간접적으로 vv로 이어지고 vv도 직접 또는 간접적으로 uu로 이어지면, 쌍 (u,v)(u, v)를 순환 쌍이라고 합니다.

리틀 Q의 머릿속은 계속 바뀝니다. ii번째 날에는 행렬 gg에서 kik_i개의 위치 (u,v)(u, v)가 뒤집힙니다(0은 1이 되고 1은 0이 됩니다). 그날의 변경을 모두 반영한 뒤의 순환 쌍 개수를 구하세요.

개수를 셀 때 (u,v)(u, v)와 (v,u)(v, u)는 같은 쌍으로 봅니다.

입력

첫 줄에는 개념의 수 nn과 날의 수 mm이 주어집니다(1≤n≤2501 \leq n \leq 250, 1≤m≤25 0001 \leq m \leq 25\,000).

다음 nn개의 줄에는 각각 정수 nn개가 주어집니다. ii번째 줄은 gi,1,gi,2,…,gi,ng_{i,1}, g_{i,2}, \ldots, g_{i,n}입니다(0≤gi,j≤10 \leq g_{i,j} \leq 1, gi,i=0g_{i,i} = 0). 이 값들이 행렬 gg를 정합니다.

그다음 mm개의 블록은 각각 하루를 나타냅니다. 각 블록은 그날의 변경 수 kik_i를 적은 줄로 시작합니다(1≤ki≤101 \leq k_i \leq 10). 이어지는 kik_i개의 줄에는 바꿀 gg의 위치 uu와 vv가 주어집니다(1≤u,v≤n1 \leq u, v \leq n, u≠vu \neq v). 같은 위치는 하루에 한 번만 바뀝니다.

출력

각 날에 대해, 그날의 변경을 모두 반영한 뒤의 순환 쌍 개수를 한 줄에 출력합니다.

예제1

  1. 예제 1

    입력
    4 2
    0010
    1000
    0000
    0000
    3
    1 4
    3 2
    1 2
    2 
    4 3
    2 3
    
    예상 출력
    3
    6