- A value of cell 1 means Source.
- A value of cell 2 means Destination.
- A value of cell 3 means Blank cell.
A value of cell 0 means Blank Wall.
Note: there are only a single source and a single destination
For each test case in a new line print 1 if the path exists from source to destination else print 0.
#include <bits/stdc++.h>
using namespace std;
#define N 21
int check(int i,int j,int n,int a[N][N])
{
// if i and j outoff index or a[i][j] is zero then return 0
if(i<0||j<0||i>=n||j>=n||a[i][j]==0)
return 0;
// if a[i][j] is destination when its value is 2
if(a[i][j]==2)
return 1;
a[i][j]=0;
// here return all combination of check value with or logic
return check(i,j+1,n,a) || check(i,j-1,n,a)||check(i-1,j,n,a)||check(i+1,j,n,a);
}
int main() {
//code
int t;
cin>>t;
while(t--)
{
int n,x,y,d,m,l;
cin>>n;
int a[N][N];
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
cin>>a[i][j];
// finding the source index when a[i][j] is 1
if(a[i][j]==1)
{
x=i,y=j;
}
}
}
cout<<check(x,y,n,a)<<endl;
}
return 0;
}