#include<bits/stdc++.h>
using namespace std;
#define INF 10000
int arr[200][200];
void mindist(vector<pair<int,int>> vec,int n,int m);
int main()
{
int tc,i,j,k,n,m,temp;
cin>>tc;
vector<pair<int,int>> vec;
for(i=0;i<tc;i++){
cin>>n>>m;
for(j=0;j<n;j++){
cin>>temp;
for(k=m-1;k>=0;k--){
if(temp%10==1){
vec.push_back(make_pair(j,k));
arr[j][k]=-INF;
}
else
arr[j][k]=INF;
temp=temp/10;
}
}
mindist(vec,n,m);
for(j=0; j<n; j++){
for(k=0; k<m; k++){
cout<<arr[j][k]<<" ";
}
cout<<endl;
}
vec.clear();
}
return 0;
}
void mindist(vector<pair<int,int>> vec,int n,int m)
{
int i,j,x,y,dist;
queue<pair<int,int>> que;
for(i=0;i<vec.size();i++){
arr[vec[i].first][vec[i].second]=0;
que.push(make_pair(vec[i].first,vec[i].second));
while(!que.empty()){
x=que.front().first;
y=que.front().second;
que.pop();
dist=arr[x][y]+1;
//left
if(y-1>=0 && arr[x][y-1]>dist){
arr[x][y-1]=dist;
que.push(make_pair(x,y-1));
}
//right
if(y+1<=m-1 && arr[x][y+1]>dist){
arr[x][y+1]=dist;
que.push(make_pair(x,y+1));
}
//down
if(x+1<=n-1 && arr[x+1][y]>dist){
arr[x+1][y]=dist;
que.push(make_pair(x+1,y));
}
//up
if(x-1>=0 && arr[x-1][y]>dist){
arr[x-1][y]=dist;
que.push(make_pair(x-1,y));
}
}
}
}
Can someone give me a test case for which my code is giving wrong answer.
Thanks in advance