01 Matrix

🧩 Syntax:
class Solution {
public:

    int bfs(int x,int y,vector<vector<int>> mat,queue<pair<int,int>>& q){
      int ans=0;
      int m=mat.size();
      int n=mat[0].size();
      q.push({x,y});     
      while(!q.empty()){
        q.pop();
        vector<int> arrx={0,0,1,-1};
        vector<int> arry={1,-1,0,0};
        for(int i=0;i<4;i++){
          int newx=x+arrx[i];int newy=y+arry[i];
          if(newx>=0 && newy>=0 && newx<m && newy<n){
            if(mat[newx][newy]==0) {return ans;}
            else{q.push({newx,newy});}
          }
          ans++;          
        }        
      }
      return ans;
    }
    vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {
        int m=mat.size();
        int n=mat[0].size();
        vector<vector<int>> ans(m,vector<int>(n));
        queue<pair<int,int>> q;
        for(int i=0;i<m;i++){
          for(int j=0;j<n;j++){
            if(mat[i][j]==0){ans[i][j]=0;}
            else{ans[i][j]=bfs(i,j,mat,q);}
          }
        }
        return ans;
    }
};
Guest

Guest