Why getting wrong answer
bool issafe(int i,int j,int n,int m)
{
if(i >= 0 && i < n && j >= 0 && j < m)
return true;
return false;
}
vector<vector<int>> updateMatrix(vector<vector<int>>& a) {
int n = a.size();
vector<vector<int>> ans(n);
if(n == 0)return a;
int m = a[0].size();
for(int i = 0; i < n;i++)
for(int j = 0;j < m;j++)
ans[i].push_back(0);
for(int i = 0; i < n;i++)
{
for(int j = 0;j < m;j++)
{
if(a[i][j] == 0)
ans[i][j] = 0;
else
{
queue<pair<int,int>>q;
q.push({i,j});
int flag = 0;
int p = 1;
while(q.size() > 0)
{
int size = q.size();
for(int k = 0 ; k < size;k++)
{
int cur_i = q.front().first;
int cur_j = q.front().second;
q.pop();
if(a[cur_i][cur_j] == 0)
{
flag = 1;
ans[i][j] = p-1;
break;
}
}
if(flag)break;
if(issafe(i+p,j,n,m))q.push({i+p,j});
if(issafe(i-p,j,n,m))q.push({i-p,j});
if(issafe(i,j+p,n,m))q.push({i,j+p});
if(issafe(i,j-p,n,m))q.push({i,j-p});
p++;
}
}
}
}
return ans;
}