2
vector<int> dr = {0, 0, 1, -1};3
vector<int> dc = {1, -1, 0, 0};6
bool isPos(int r, int c, int n) {7
return (r >= 0 && c >= 0 && r < n && c < n);10
int maxDistance(vector<vector<int>> &grid) {12
vector<vector<int>> dist(n, vector<int>(n, -1));13
queue<vector<int>> pq;14
for (int i = 0; i < n; i++) {15
for (int j = 0; j < n; j++) {16
if (1 == grid[i][j]) {24
vector<int> vect = pq.front();28
if (0 == grid[r][c]) {29
ans = max(ans, dist[r][c]);31
for (int i = 0; i < 4; i++) {34
if (isPos(nr, nc, n) && -1 == dist[nr][nc]) {35
dist[nr][nc] = dist[r][c] + 1;40
return (ans == 0 ? -1 : ans);