nicuvlad76

Untitled

Jan 13th, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 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. int lin[N*N],col[N*N];
  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 Lee(int li, int ci)
  30. {
  31. int st,dr, lv,cv,k,l,c;
  32. st=dr=1;
  33. lin[dr]=li;
  34. col[dr]=ci;///am pus in coada val init
  35. a[li][ci]=1;
  36. while(st<=dr)
  37. {
  38. l=lin[st];
  39. c=col[st++];///extrag din coada varf
  40. for(k=0; k<4; k++)
  41. {
  42. lv=l+dl[k];
  43. cv=c+dc[k];
  44. if(Inside(lv,cv)&& a[lv][cv]==0)
  45. {
  46. a[lv][cv]=a[l][c]+1;
  47. dr++;
  48. lin[dr]=lv;
  49. col[dr]=cv;
  50. }
  51. }
  52. }
  53. }
  54. int main()
  55. {
  56. Citire();
  57. Lee(li,ci);
  58. if(a[ls][cs]==0)fout<<-1;
  59. else fout<<a[ls][cs]-1;
  60. return 0;
  61. }
  62.  
  63.  
Advertisement
Add Comment
Please, Sign In to add comment