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;
}
};