Pagini recente » Cod sursa (job #2767562) | Cod sursa (job #555127) | Cod sursa (job #2385601) | Cod sursa (job #3252160) | Cod sursa (job #2551159)
#include <iostream>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("alee.in");
ofstream fout("alee.out");
queue < pair<int ,int> > q;
int x1,y1,x2,y2,n,m;
int v[176][176];
int di[]={-1,0,1,0};
int dj[]={0,1,0,-1};
void citire()
{
fin>>n>>m;
int i,j;
for(int c=1;c<=m;c++)
{
fin>>i>>j;
v[i][j]=-1;
}
fin>>x1>>y1>>x2>>y2;
v[x1][y1]=1;
}
bool verif(int i ,int j)
{
if(!(i>0 && i<=n && j>0 && j<=n) || v[i][j]!=0)
return false;
return true;
}
void lee()
{
q.push(make_pair(x1,y1));
while(!q.empty() && v[x2][y2]==0)
{
int i,j,inou,jnou;
i=q.front().first;
j=q.front().second;
q.pop();
for(int k=0;k<=3;k++)
{
inou=i+di[k];
jnou=j+dj[k];
if(verif(inou,jnou))
{
v[inou][jnou]=v[i][j]+1;
q.push(make_pair(inou,jnou));
}
}
}
}
int main()
{
citire();
lee();
fout<<v[x2][y2];
}