Advertisement
STANAANDREY

Lee

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