Advertisement
Guest User

Untitled

a guest
Feb 16th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include<fstream>
  2. #include<queue>
  3.  
  4. using namespace std;
  5.  
  6. ifstream cin("alee.in");
  7. ofstream cout("alee.out");
  8.  
  9. int di[] = { 0,0,1,-1 };
  10. int dj[] = { 1,-1,0,0 };
  11.  
  12. queue<pair<int, int> >Que;
  13.  
  14. int matrix[180][180], i, j, m, n, new_i, new_j;
  15. int startx, starty, stopx, stopy;
  16.  
  17. bool OK(int i, int j)
  18. {
  19.     if (i > 0 && j > 0 && i <= n && j <= n && matrix[i][j] != -1)
  20.         return true;
  21.     return false;
  22. }
  23.  
  24. void Read()
  25. {
  26.     cin >> n >> m;
  27.     for (i = 1; i <= m; i++)
  28.     {
  29.         int ii, jj;
  30.         cin >> ii >> jj;
  31.         matrix[ii][jj] = -1;
  32.     }
  33.     cin >> startx >> starty;
  34.     cin >> stopx >> stopy;
  35. }
  36.  
  37. void Lee()
  38. {
  39.     matrix[startx][starty] = 1;
  40.     Que.push(make_pair(startx, starty));
  41.     while (!Que.empty())
  42.     {
  43.         i = Que.front().first;
  44.         j = Que.front().second;
  45.         Que.pop();
  46.         for (int dir = 0; dir < 4; dir++)
  47.         {
  48.             new_i = i + di[dir];
  49.             new_j = j + dj[dir];
  50.             if (OK(new_i, new_j) && matrix[new_i][new_j] < 1)
  51.             {
  52.                 matrix[new_i][new_j] = matrix[i][j] + 1;
  53.                 Que.push(make_pair(new_i, new_j));
  54.             }
  55.         }
  56.     }
  57. }
  58.  
  59. int main()
  60. {
  61.     Read();
  62.     Lee();
  63.     cout << matrix[stopx][stopy];
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement