/ XMU_ACM / 题库 /

刘学习的会模糊的卡诺图

刘学习的会模糊的卡诺图

Background

“刘学习虽然走了,但是他永远地活在了我们的题面里。”

Description

在本题中,一个“卡诺图”可以视为一个n * m且元素大小仅为0或者1的矩阵。
刘学习有一个初始卡诺图,他的卡诺图比较神奇,会自发地进行“模糊”操作,模糊操作定义如下:
x y表示将第x行y列的元素模糊为0(即原来是1则变成0,原来是0则不发生变化)
现给出q个操作,对于每个操作,你需要告诉刘学习他的卡诺图在操作后“由1构成的连通块”的个数。注意,每次模糊操作进行后不会复原,即你在考虑第i个操作时,也要考虑前i-1个操作的效果。
“由1构成的连通块”理解为“一片相邻的1”,两个1相邻指的是其中一个1在另一个1的正上方、正下方、正左方或正右方一个单位的位置,例如:
对于卡诺图
1 0 1 1 0 1
0 1 1 1 0 1
1 0 0 1 0 0
“由1构成的连通块”的个数为4。

Format

Input

第一行两个正整数n m描述卡诺图的大小。1<=n, m<=1000。
接下来n行每行m个正整数,每个正整数0 或 1,用来描述卡诺图的内容。
接下来一行一个正整数q表示操作个数。1<=q<=100000。
接下来q行每行两个正整数x y表示对第x行y列进行模糊操作。
注意,若输入矩阵为
1 0 1 1 0 1
0 1 1 1 0 1
1 0 0 1 0 0
则左上角坐标为(1,1),右下角坐标为(3,6)。

Output

Sample 1

Input

3 6
1 0 1 1 0 1
0 1 1 1 0 1
1 0 0 1 0 0
4
2 2
3 3 
2 4
1 3

Output

4
4
5
6

Limitation

1s, 64Mb for each test case.

Hint

Source

2019网宿杯XMU程序设计竞赛现场赛