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
1 #include <iostream> 2 using namespace std; 3 bool arr[10][10]; 4 int main() 5 { 6 int n,m; 7 while(cin>>n>>m&&n!=0) 8 { 9 bool flag=true; 10 int sum=0; 11 for(int i=0;i<n;i++) 12 { 13 14 for(int j=0;j<m;j++) 15 { 16 cin>>arr[i][j]; 17 sum+=arr[i][j]; 18 if((arr[i][j]==0&&j>0&&arr[i][j-1]==0)||(i>0&&arr[i-1][j]==0&&arr[i][j]==0)) 19 { 20 flag=false; 21 22 } 23 } 24 } 25 26 if(flag&&sum!=m*n) 27 cout<<"Yes"<<endl; 28 else 29 cout<<"No"<<endl; 30 31 } 32 return 0; 33 }