Pagini recente » Cod sursa (job #1572532) | Cod sursa (job #1512298) | Cod sursa (job #33650) | Cod sursa (job #2223293) | Cod sursa (job #197576)
Cod sursa(job #197576)
#include <stdio.h>
struct coord {int x1,y1,x2,y2;};
int dx[4]={-1,0,1, 0};
int dy[4]={ 0,1,0,-1};
int a[4][255],b[4][255];
int n,c,m;
coord z[205];
void trans ()
{
int i,j;
for (i=1; i<=2; ++i)
for (j=1; j<=c; ++j)
b[i][j]=a[i][j];
}
void solve (int t)
{
int i,j,k,step,flag=1;
b[z[t].x1][z[t].y1]=1;
for (step=1; flag; ++step)
{
flag=0;
if (b[z[t].x2][z[t].y2])
break;
for (i=1; i<=2; ++i)
for (j=1; j<=c; ++j)
if (b[i][j]==step)
for (k=0; k<4; ++k)
if (b[i+dx[k]][j+dy[k]]!=-1 && (b[i+dx[k]][j+dy[k]]>step+1 || !b[i+dx[k]][j+dy[k]]))
{
b[i+dx[k]][j+dy[k]]=step+1;
flag=1;
}
}
printf ("%d\n",b[z[t].x2][z[t].y2]);
}
void read ()
{
int i,x,y;
scanf ("%d%d",&c,&n);
for (i=1; i<=n; ++i)
{
scanf ("%d%d",&x,&y);
a[x][y]=-1;
}
scanf ("%d",&m);
for (i=1; i<=m; ++i)
{
scanf ("%d%d%d%d",&z[i].x1,&z[i].y1,&z[i].x2,&z[i].y2);
trans ();
solve (i);
}
}
int main ()
{
freopen ("gropi.in","r",stdin);
freopen ("gropi.out","w",stdout);
read ();
return 0;
}