Advertisement
nicuvlad76

Untitled

Jan 13th, 2021
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define N 1005
  3. using namespace std;
  4. ifstream fin("roboti.in");
  5. ofstream fout("roboti.out");
  6. ///Lee -864
  7. int a[N][N],n,m;
  8. int li,ci,ls,cs;
  9. int dl[]= {-1,0,1,0};
  10. int dc[]= {0,-1,0,1};
  11. ///coada
  12. queue<pair <int,int> > q;
  13. void Citire()
  14. {
  15. fin>>n>>m;
  16. for(int i=1; i<=n; i++)
  17. for(int j=1; j<=m; j++)
  18. {
  19. fin>>a[i][j];
  20. a[i][j]=-a[i][j];
  21.  
  22. }
  23. fin>>li>>ci>>ls>>cs;
  24. }
  25. /*bool Inside(int i, int j)
  26. {
  27. return i>=1 && i<=n && j>=1 && j<=m;
  28. }*/
  29. void Bordare()
  30. {
  31. for(int i=0;i<=m+1;i++)
  32. a[0][i]=a[n+1][i]=-1;
  33. for(int i=0;i<=n+1;i++)
  34. a[i][0]=a[i][m+1]=-1;
  35. }
  36. void Lee(int li, int ci)
  37. {
  38. int l,c, k,lv,cv;
  39. q.push({li,ci});
  40. a[li][ci]=1;
  41. while(!q.empty()&&a[ls][cs]==0)
  42. {
  43. l=q.front().first;
  44. c=q.front().second;
  45. q.pop();
  46. for(k=0;k<4;k++)
  47. {
  48. lv=l+dl[k];
  49. cv=c+dc[k];
  50. if(a[lv][cv]==0)
  51. {
  52. q.push({lv,cv});
  53. a[lv][cv]=a[l][c]+1;
  54. }
  55. }
  56. }
  57.  
  58.  
  59. }
  60. int main()
  61. {
  62. Citire();
  63. Bordare();
  64. Lee(li,ci);
  65. if(a[ls][cs]==0)fout<<-1;
  66. else fout<<a[ls][cs]-1;
  67. return 0;
  68. }
  69.  
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement