CodePlus 第五次网络赛 我有矩阵,你有吗?

题目描述
企鹅豆豆手里有两个 01 矩阵 A 和 B 。他可以进行两种操作:

选择 A 矩阵的一行,然后把这一行的 0 变成 1 ,把 1 变成 0 。
选择 A 矩阵的一列,然后把这一列的 0 变成 1 ,把 1 变成 0 。
现在他想知道能不能把 A 矩阵通过以上操作变成 B 矩阵。保证 A 矩阵和 B 矩阵的大小一致。

输入格式
从标准输入读入数据。

每个测试点只有一组数据。

输入的第一行包含两个正整数 n 和 m ,表示 A 矩阵的行数,保证 n≤103 ,m≤103 。 接下来 n 行,每行 m 个由空格隔开的整数,表示矩阵 A 。保证矩阵中只有 0 或者 1 。 接下来 n 行,每行 m 个由空格隔开的整数,表示矩阵 B 。保证矩阵中只有 0 或者 1 。

输出格式
输出到标准输出。

如果矩阵 A 通过以上两种操作可以变成矩阵 B ,输出 Koyi,否则输出 Budexing。

样例1输入
3 3
1 0 1
1 1 0
0 1 0
1 1 0
0 1 0
1 1 0
样例1输出
Koyi
 

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int n,m;
int s[1005][1005],t[1005][1005];
int s1[1005],s2[1005];
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf("%d",&s[i][j]);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf("%d",&t[i][j]);
	s1[0]=0;
	for(int i=1;i<=m;i++)
		s2[i]=s[1][i]^t[1][i];
	for(int i=1;i<=n;i++)
		s1[i]=s2[1]^s[i][1]^t[i][1];
	int fl=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			if((s1[i]^s2[j])!=(s[i][j]^t[i][j])) fl=1;
		}
	if(fl) puts("Budexing");
	else puts("Koyi");
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/mlm5678/article/details/83789229