
Tom's Meadow
Tom has a meadow in his garden. He divides it into N * M squares. Initially all the squares were covered with grass. He mowed down the grass on some of the squares and thinks the meadow is beautiful if and only if
- Not all squares are covered with grass.
- No two mowed squares are adjacent.
Two squares are adjacent if they share an edge. Here comes the problem: Is Tom's meadow beautiful now?
Input
The input contains multiple test cases!
Each test case starts with a line containing two integers N, M (1 <= N, M <= 10) separated by a space. There follows the description of Tom's Meadow. There're Nlines each consisting of M integers separated by a space. 0(zero) means the corresponding position of the meadow is mowed and 1(one) means the square is covered by grass.
A line with N = 0 and M = 0 signals the end of the input, which should not be processed
<b< dd="">
Output
One line for each test case.
Output "Yes" (without quotations) if the meadow is beautiful, otherwise "No"(without quotations).
<b< dd="">
Sample Input
2 2
1 0
0 1
2 2
1 1
0 0
2 3
1 1 1
1 1 1
0 0
<b< dd="">
Sample Output
Yes
No
No
#include <iostream>
using namespace std;
bool arr[][];
int main()
{
int n,m;
while(cin>>n>>m&&n!=)
{
bool flag=true;
int sum=;
for(int i=;i<n;i++)
{ for(int j=;j<m;j++)
{
cin>>arr[i][j];
sum+=arr[i][j];
if((arr[i][j]==&&j>&&arr[i][j-]==)||(i>&&arr[i-][j]==&&arr[i][j]==))
{
flag=false; }
}
} if(flag&&sum!=m*n)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl; }
return ;
}