int orangesRotting(vector<vector<int>>& grid) {
int dx[4] = {1, 0, 0, -1};
int dy[4] = {0, 1, -1, 0};
int time[15][15];
queue<pair<int,int>> q;
int n=grid.size();
int m=grid[0].size();
/*
时间问题:每次新腐烂橘子时间是上一次传染给他的时间+1
所以吧腐烂橘子时间设为0
*/
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]==0){
time[i][j]=-1;
}else{
time[i][j]=0;
if(grid[i][j]==2){
q.push({i,j});
}
}
}
}
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
//多个腐烂橘可能都会到达同一点,取时间最少的
if(nx>=0&&nx<n&&ny>=0&&ny<m&&grid[nx][ny]==1){
cout<<nx<<" "<<ny<<endl;
//int t=time[x][y]+1;
time[nx][ny]=time[x][y]+1;
grid[nx][ny]=2;
q.push({nx,ny});
}
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]==1){
return -1;
}
//cout<<time[i][j]<<" ";
ans=max(ans,time[i][j]);
}
//cout<<endl;
}
return ans;
};