Pagini recente » Cod sursa (job #2803504) | Cod sursa (job #2740017) | Cod sursa (job #525136) | Cod sursa (job #2233127) | Cod sursa (job #1518377)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("alee.in");
ofstream fout("alee.out");
int di[4]={0,0,1,-1};
int dj[4]={1,-1,0,0};
int Map[180][180],N,M,startx,starty,stopx,stopy;
queue< pair< int , int > >coada;
void Citire()
{
fin>>N>>M;
for(int i=1;i<=M;i++)
{
int x,y;
fin>>x>>y;
Map[x][y]=-1;
}
fin>>startx>>starty>>stopx>>stopy;
}
bool OK(int i,int j)
{
if(i<1 || j<1 || i>N || j>N)
return false;
if(Map[i][j]==-1)
return false;
return true;
}
void Lee()
{
int i,j,i1,j1;
Map[startx][starty]=1;
coada.push(make_pair(startx,starty));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int dir=0;dir<4;dir++)
{
i1=i+di[dir];
j1=j+dj[dir];
if(OK(i1,j1) && Map[i1][j1]<1)
{
Map[i1][j1]=Map[i][j]+1;
coada.push(make_pair(i1,j1));
}
}
}
}
int main()
{
Citire();
Lee();
fout<<Map[stopx][stopy];
return 0;
}