Pagini recente » Cod sursa (job #604123) | Cod sursa (job #1266989) | Cod sursa (job #2897407) | Cod sursa (job #2982061) | Cod sursa (job #1881761)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("alee.in");
ofstream g("alee.out");
int di[4]={0,0,1,-1};
int dj[4]={1,-1,0,0};
int Map[175][175],n,m,startx,starty,stopx,stopy;
queue < pair < int,int > >coada;
void citire()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
Map[x][y]=-1;
}
f>>startx>>starty>>stopx>>stopy;
}
bool ok(int i, int j)
{
if(i<1||i<1||j>n||i>n)
return false;
if(Map[i][j]==-1)
return false;
return true;
}
void lee()
{
int i,j,i_urm,j_urm;
Map[startx][stopx]=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++)
{
i_urm=i+di[dir];
j_urm=j+dj[dir];
if(ok(i_urm,j_urm)&&Map[i_urm][j_urm]<1)
{
Map[i_urm][j_urm]=Map[i][j]+1;
coada.push(make_pair(i_urm,j_urm));
}
}
}
}
int main()
{
citire();
lee();
g<<Map[stopx][stopy];
return 0;
}