Alex_tz307

alee

Oct 7th, 2021
1,206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("alee.in");
  6. ofstream fout("alee.out");
  7.  
  8. int n, m, X1, Y1, X2, Y2, d[176][176], di[] = {-1, 0, 1, 0}, dj[] = {0, 1, 0, -1};
  9.  
  10. struct pozitie {
  11.     int i, j;
  12. } q[176 * 176];
  13.  
  14. void Lee() {
  15.     int st = 1, dr = 0;
  16.     pozitie aux;
  17.     aux.i = X1, aux.j = Y1;
  18.     ++dr;
  19.     q[dr] = aux;
  20.     d[X1][Y1] = 1;
  21.     while (st <= dr) {
  22.         int i = q[st].i, j = q[st].j;
  23.         ++st;
  24.         // i, j
  25.         // i - 1, j + 0
  26.         // i + 0, j + 1
  27.         // i + 1, j + 0
  28.         // i + 0, j - 1
  29.         // d[i][j] - cel mai scurt drum pana la (i, j)
  30.         for (int k = 0; k < 4; ++k) {
  31.             int iv = i + di[k], jv = j + dj[k];
  32.             if (1 <= iv && iv <= n && 1 <= jv && jv <= n) {
  33.                 if (d[iv][jv] == 0) {
  34.                     d[iv][jv] = d[i][j] + 1;
  35.                     aux.i = iv, aux.j = jv;
  36.                     q[++dr] = aux;
  37.                 }
  38.             }
  39.         }
  40.     }
  41. }
  42.  
  43. int main() {
  44.     fin >> n >> m;
  45.     for (int i = 1; i <= m; ++i) {
  46.         int x, y;
  47.         fin >> x >> y;
  48.         d[x][y] = -1;
  49.     }
  50.     fin >> X1 >> Y1 >> X2 >> Y2;
  51.     Lee();
  52.     fout << d[X2][Y2] << '\n';
  53.     fin.close();
  54.     fout.close();
  55.     return 0;
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment