Given an m x n binary matrix mat, return _the distance of the nearest_ 0 _for each cell_.

The distance between two adjacent cells is 1.

class Solution {
 
  
 
public static class rowCol{
 
int x;
 
int y;
 
public rowCol(int x,int y){
 
this.x = x;
 
this.y = y;
 
}
 
}
 
  
 
public int[][] updateMatrix(int[][] mat) {
 
int[][] result = new int[mat.length][mat[0].length];
 
Queue<rowCol> que = new LinkedList<>();
 
int n = mat[0].length;
 
for(int[] curr : result){
 
Arrays.fill(curr, -1);
 
}
 
for(int i=0; i<mat.length; i++){
 
for(int j=0; j<mat[i].length; j++){
 
if(mat[i][j] == 0){
 
result[i][j] = 0;
 
que.offer(new rowCol(i, j));
 
}
 
}
 
}
 
  
 
int[] xDir = {1,-1, 0, 0};
 
int[] yDir = {0, 0, 1, -1};
 
  
 
while(que.size()!=0){
 
rowCol curr = que.poll();
 
for(int i=0;i<4;i++){
 
int nRow = curr.x+xDir[i];
 
int nCol = curr.y+yDir[i];
 
System.out.println(curr.x+xDir[i]+":"+ (curr.y+yDir[i]));
 
if ( nRow < mat.length &&
 
nRow >=0 &&
 
nCol < mat[0].length &&
 
nCol >=0 &&
 
result[nRow][nCol] == -1)
 
{
 
result[curr.x+xDir[i]][curr.y+yDir[i]] = result[curr.x][curr.y]+1;
 
que.offer(new rowCol(curr.x+xDir[i],curr.y+yDir[i]));
 
}
 
}
 
  
 
}
 
  
 
return result;
 
}
 
}