Pagini recente » Cod sursa (job #907281) | Cod sursa (job #2890865) | Cod sursa (job #2755847) | Cod sursa (job #2893537) | Cod sursa (job #266578)
Cod sursa(job #266578)
#include <stdio.h>
struct coada{
unsigned char l,c;
}c[16000];
int n,m,i,j,x,y,x1,y1,p,u,la,ca,lv,cv,min;
char dx[4]={-1, 0, 1, 0};
char dy[4]={0, 1, 0, -1};
int a[176][176];
int main()
{
freopen("alee.in","r",stdin);
freopen("alee.out","w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=m;i++)
{
scanf("%d %d", &x, &y);
a[x][y]=-1;
}
scanf("%d %d %d %d",&x,&y,&x1,&y1);
for (i=0;i<=n+1;i++)
{
a[0][i]=-1;
a[i][0]=-1;
a[n+1][i]=-1;
a[i][n+1]=-1;
}
a[x][y]=1;
p=1; u=1;
c[1].l=x;
c[1].c=y;
min=32000;
while (p<=u)
{
la=c[p].l;
ca=c[p].c;
for (i=0;i<4;i++)
{
lv=la+dx[i];
cv=ca+dy[i];
if (a[lv][cv]==0)
{
a[lv][cv]=a[la][ca]+1;
if (a[lv][cv]<min && lv==x1 && cv==y1)
min=a[lv][cv];
u++;
c[u].l=lv;
c[u].c=cv;
}
}
p++;
}
printf("%d", min);
return 0;
}