Pagini recente » Cod sursa (job #2405238) | Cod sursa (job #1488885) | Cod sursa (job #1173964) | Cod sursa (job #930392) | Cod sursa (job #1953747)
//to be continued
#include <bits/stdc++.h>
#define INF 1e9+1
using namespace std;
ifstream f("car.in");
ofstream g("car.out");
int a[505][505];
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,-1,1,-1,0,1};
queue< pair<int,int> >q;
queue< pair<int,int> >qq;
void BFS()
{
int i,j,iu,ju,k,ip,jp,cost;
i=q.front().first;
j=q.front().second;
for(k=0;k<=7;k++)
{
iu=i+dx[k];
ju=j+dy[k];
if(a[iu][ju]==INF)
{
a[iu][ju]=0;
q.push({iu,ju});
qq.push({i,j});
}
}
while(!q.empty())
{
i=q.front().first;
j=q.front().second;
ip=qq.front().first;
jp=qq.front().second;
q.pop();
qq.pop();
for(k=0;k<=7;k++)
{
iu=i+dx[k];
ju=j+dy[k];
if(ip==i)
{
if(iu==i)
{
if(ju>j) cost=0;
else cost=4;
}
if(iu==i-1 or iu==i+1)
{
if(ju==j) cost=2;
if(ju==j+1) cost=1;
if(ju==j-1) cost=3;
}
}
if(ip==i-1)
{
}
if(ip==i+1)
{
}
}
}
}
int main()
{int n,m,xi,yi,xf,yf,i,j;
f>>n>>m>>xi>>yi>>xf>>yf;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>a[i][j];
if(a[i][j]) a[i][j]=-1;
else a[i][j]=INF;
}
q.push({xi,yi});
qq.push({0,0});
a[xi][yi]=0;
for(i=1;i<=n;i++)
a[i][0]=a[i][m+1]=INF;
for(i=1;i<=m;i++)
a[0][i]=a[n+1][i]=INF;
BFS();
if(a[xf][yf]==INF) g<<-1;
else
g<<a[xf][yf];
return 0;
}