小黄最近在学线代,发现矩阵真是一个好玩的东西,现在小黄得到了两个 n*m 的只含有0或者1矩阵 A 和 B,每行从上往下依次编号为1,2,..,n,每列从左往右依次编号为1,2,...,m。你现在有一个可以使用无数次的技能,每次可以从矩阵 A 里选择两个位置(x1,y1) 和 (x2,y2)(1<= x1,x2 <=n,1<= y1,y2 <=m) ,满足 x1=x2 , |y1-y2| = c 或者满足 y1=y2, |x1-x2| = r,然后你可以把这两个位置上的数同时取反,即 0 变成 1,1 变成 0 。 请问是否能将 矩阵A 变为 矩阵B 。
第一行一个整数 T 。代表有 T 组数据。对于每组数据 :
第一行包含 4 个整数 n,m,r,c 。(1<=n*m<=10^6,1<=r,c<=2)
接下来 n 行,每行包含一个长度为 m 的01串,代表矩阵 A 。
再接下来 n 行,每行包含一个长度为 m 的01串,代表矩阵 B 。
保证 T 组数据的 n*m 累加起来不超过10^6。
本题数据较大,大家尽量不要用 cin,cout 输入输出方式。
对于每组数据,一行一个 Yes 或 No。代表是否能从矩阵 A 变为矩阵 B 。
3 2 3 1 1 000 000 011 110 2 3 1 1 000 000 111 111 2 3 2 1 000 000 111 111
Yes Yes No Hint: 对于第1个样例,你可以先选择(1,2)和(1,3),然后再选择(2,1)和(2,2)。 对于第2个样例,你可以先选择(1,1)和(1,2),然后选择(2,1)和(2,2),最后选择(1,3)和(2,3)。 对于第3个样例,你不管怎么操作都无法从A变成B。