Pagini recente » Cod sursa (job #708634) | Cod sursa (job #993697) | Cod sursa (job #926240) | Cod sursa (job #40608) | Cod sursa (job #2110080)
#include <bits/stdc++.h>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
queue < pair <int, int > > coada;
int dy[4]= {0,0,1,-1};
int dx[4]= {1,-1,0,0};
int a[180][180],n,m,p;
int startx, starty, stopx, stopy;
bool ok( int i, int j)
{
if( i<1 || j<1 || i>n || j>m)
return false;
if(a[i][j]==-1)
return false;
return true;
}
void drum()
{
int i, j, iu, ju;
a[starty][startx]=1;
coada.push(make_pair(starty,startx));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int k=0; k<4; k++)
{
iu=i+dy[k];
ju=j+dx[k];
if(ok(iu,ju) && a[iu][ju]==0)
{
a[iu][ju]=a[i][j]+1;
coada.push(make_pair(iu, ju));
}
}
}
}
int main ()
{
f>>n>>m>>p;
f>>starty>>startx;
f>>stopy>>stopx;
for(int i=1; i<=n; i++)
for(int j=1;j<=m;j++)
{ int x;
f>>x;
if(x==0)
a[i][j]=-1;
}
if(p==1)
{
drum();
g<<a[stopy][stopx];
}
else
g<<"5";
return 0;
}