Problem Description
There is a matrix with m rows and n columns. An element of the matrix has at most four adjacent elments(up, down,left,right). You can add a same number to a pair of adjacent elements of the matrix. By doing this operation repeation repeatly, can you make the
matrix zero?
Input
A line contains m and n indicating the rows and columns of the matrix. (0<m,n<5)
Each of the following m lines contains n integers(-10^6<=each integer<=10^6)
Input is terminated by one line contains two zeros.
Each of the following m lines contains n integers(-10^6<=each integer<=10^6)
Input is terminated by one line contains two zeros.
Output
if the matrix can be converted into zero, ouput"Yes" on a line otherwise output "No" on a line.
Sample Input
2 2 1 1 1 0 2 2 0 0 1 1 0 0
Sample Output
No Yes
# include<cstdio> # include<iostream> # include<cstring> using namespace std; int a[20][20],n,m; int main() { //freopen("a.txt","r",stdin); while(cin>>m>>n&&n&&m) { int i,j; memset(a,0,sizeof(a)); for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>a[i][j]; for(i=1;i<=m;i++) { if(i%2!=0) { a[i][1]-=a[i-1][j]; for(j=2;j<=n;j++) a[i][j]-=a[i][j-1]; } else { a[i][n]-=a[i-1][n]; for(j=n;j>=2;j--) a[i][j-1]-=a[i][j]; } } if((m%2&&a[m][n]==0)||(m%2==0&&a[m][1]==0)) { cout<<"Yes"<<endl; continue; } else cout<<"No"<<endl; } return 0; }