Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 1005
- using namespace std;
- ifstream fin("roboti.in");
- ofstream fout("roboti.out");
- ///Lee -864
- int a[N][N],n,m;
- int li,ci,ls,cs;
- int dl[]= {-1,0,1,0};
- int dc[]= {0,-1,0,1};
- ///coada
- queue<pair <int,int> > q;
- void Citire()
- {
- fin>>n>>m;
- for(int i=1; i<=n; i++)
- for(int j=1; j<=m; j++)
- {
- fin>>a[i][j];
- a[i][j]=-a[i][j];
- }
- fin>>li>>ci>>ls>>cs;
- }
- /*bool Inside(int i, int j)
- {
- return i>=1 && i<=n && j>=1 && j<=m;
- }*/
- void Bordare()
- {
- for(int i=0;i<=m+1;i++)
- a[0][i]=a[n+1][i]=-1;
- for(int i=0;i<=n+1;i++)
- a[i][0]=a[i][m+1]=-1;
- }
- void Lee(int li, int ci)
- {
- int l,c, k,lv,cv;
- q.push({li,ci});
- a[li][ci]=1;
- while(!q.empty()&&a[ls][cs]==0)
- {
- l=q.front().first;
- c=q.front().second;
- q.pop();
- for(k=0;k<4;k++)
- {
- lv=l+dl[k];
- cv=c+dc[k];
- if(a[lv][cv]==0)
- {
- q.push({lv,cv});
- a[lv][cv]=a[l][c]+1;
- }
- }
- }
- }
- int main()
- {
- Citire();
- Bordare();
- Lee(li,ci);
- if(a[ls][cs]==0)fout<<-1;
- else fout<<a[ls][cs]-1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement