Easy BFS Solution


#1
int Solution::solve(vector<vector<int> > &A)
{
  int row[2]={0,1};
  int col[2]={1,0};
  int i,j,x,y,k,n=A.size(),m=A[0].size(),ans=0;
  bool vis[n][m];
  for(i=0;i<n;i++)
  {
for(j=0;j<m;j++)
  vis[i][j]=0;
  }
  queue<pair<int,int> > q;
  q.push({0,0});
  vis[0][0]=1;
  while(!q.empty())
  {
int l=q.size();
while(l--)
{
  pair<int,int> p=q.front();
  q.pop();
  for(k=0;k<2;k++)
  {
    x=p.first+row[k];
    y=p.second+col[k];
    if(x>=0 && x<n && y>=0 && y<m && vis[x][y]==0 && A[x][y]>A[p.first][p.second])
    {
      vis[x][y]=1;
      q.push({x,y});
    }
  }
}
ans++;
  }
  if(vis[n-1][m-1]==0)
return -1;
  return ans;
 
}