1. 程式人生 > >CodePlus 第五次網路賽 我有矩陣,你有嗎?

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;
}