399 {
400 int n;
401 int start_x;
402 int start_y;
403 auto *field =
new int *[
N + 10];
404 for(
int i = 0; i <
N + 10; i++) {
405 field[i] =
new int[
N + 10];
406 memset(field[i], 0, (
N + 10) *
sizeof(
int));
407 }
408
409
410 cin >> n >> start_x >> start_y;
411
412 int max_x = 0;
413 int max_y = 0;
414 for(int i = 0; i < n; i++) {
415 int x;
416 int y;
417 cin >> x >> y;
418 if(max_x < x) {
419 max_x = x;
420 }
421 if(max_y < y) {
422 max_y = y;
423 }
424 field[x][y] = 1;
425 }
426 cout <<
bfs(point(start_x, start_y, 0), field, max_x, max_y);
427 for(
int i = 0; i <
N + 10; i++) {
428 delete[] field[i];
429 }
430 delete[] field;
431 return 0;
432 }
int bfs(point start, int **field, int max_x, int max_y)