问题描述 |
---|
在本题中,一个 “卡诺图” 可以视为一个 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。 |
输入描述 |
第一行两个正整数 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)。 |
输出描述 |
对于每个操作,你需要告诉刘学习他的卡诺图在操作后 “由1构成的连通块” 的个数,然后换行。 |
样例输入复制样例 |
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 |
样例输出 |
4 4 5 6 |
来源 |
2019网宿杯XMU程序设计竞赛现场赛 |