Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("alee.in");
- ofstream fout("alee.out");
- int n, m, X1, Y1, X2, Y2, d[176][176], di[] = {-1, 0, 1, 0}, dj[] = {0, 1, 0, -1};
- struct pozitie {
- int i, j;
- } q[176 * 176];
- void Lee() {
- int st = 1, dr = 0;
- pozitie aux;
- aux.i = X1, aux.j = Y1;
- ++dr;
- q[dr] = aux;
- d[X1][Y1] = 1;
- while (st <= dr) {
- int i = q[st].i, j = q[st].j;
- ++st;
- // i, j
- // i - 1, j + 0
- // i + 0, j + 1
- // i + 1, j + 0
- // i + 0, j - 1
- // d[i][j] - cel mai scurt drum pana la (i, j)
- for (int k = 0; k < 4; ++k) {
- int iv = i + di[k], jv = j + dj[k];
- if (1 <= iv && iv <= n && 1 <= jv && jv <= n) {
- if (d[iv][jv] == 0) {
- d[iv][jv] = d[i][j] + 1;
- aux.i = iv, aux.j = jv;
- q[++dr] = aux;
- }
- }
- }
- }
- }
- int main() {
- fin >> n >> m;
- for (int i = 1; i <= m; ++i) {
- int x, y;
- fin >> x >> y;
- d[x][y] = -1;
- }
- fin >> X1 >> Y1 >> X2 >> Y2;
- Lee();
- fout << d[X2][Y2] << '\n';
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment