Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <queue>
- std::ifstream fin("alee.in");
- std::ofstream fout("alee.out");
- using namespace std;
- int a[176][176], n, m, ip1, jp1, ip2, jp2;
- const int di[] = { 0,0,-1,1 }, dj[] = { -1,1, 0,0 };
- inline bool Inside(int i, int j)
- {
- return i > 0 && i <= n && j > 0 && j <= n;
- }
- void Fill(int is, int js)
- {
- queue<pair<int,int>> Q;
- a[is][js] = 1;
- Q.push({ is, js });
- while (!Q.empty())
- {
- int i, j;
- i = Q.front().first;
- j = Q.front().second;
- for (int k = 0; k < 4; k++)
- {
- int iv, jv;
- iv = i + di[k];
- jv = j + dj[k];
- if (Inside(iv, jv) && a[iv][jv] == 0)
- a[iv][jv] = a[i][j] + 1, Q.push(make_pair(iv, jv));
- }
- Q.pop();
- }
- }
- int main()
- {
- fin >> n >> m;
- for (int i = 1; i <= m; i++)
- {
- int c, b;
- fin >> c >> b;
- a[c][b] = -1;
- }
- fin >> ip1 >> jp1 >> ip2 >> jp2;
- Fill(ip1, jp1);
- fout << a[ip2][jp2];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement