Pagini recente » Cod sursa (job #2714538) | Cod sursa (job #402554) | Cod sursa (job #416348) | Cod sursa (job #121522) | Cod sursa (job #197652)
Cod sursa(job #197652)
#include <stdio.h>
#include <string>
#define maxl 3
#define maxn 260
#define maxx 510
#define maxk 4
int n, m, l;
int a[maxl][maxn], c[maxl][maxn];
int sx[maxx];
int sy[maxx];
int dirx[maxk] = {0, 0, -1, 1};
int diry[maxk] = {-1, 1, 0, 0};
void BFS(int x, int y)
{
int i, j, cx, cy;
l = 1;
sx[l] = x;
sy[l] = y;
c[x][y] = 1;
for (i=1; i<=l; i++)
for (j=0; j<maxk; j++)
{
cx = sx[i] + dirx[j];
cy = sy[i] + diry[j];
if (cx>0 && cy>0 && cx<3 && cy<=n && !a[cx][cy] && !c[cx][cy])
{
c[cx][cy] = c[sx[i]][sy[i]] + 1;
sx[++l] = cx;
sy[l] = cy;
}
}
}
int main()
{
freopen("gropi.in", "r", stdin);
freopen("gropi.out", "w", stdout);
int T, i, x, y;
scanf("%d %d ", &n, &m);
for (i=1; i<=m; i++)
{
scanf("%d %d ", &x, &y);
a[x][y] = 1;
}
scanf("%d ", &T);
while (T)
{
T--;
memset(c, 0, sizeof(c));
scanf("%d %d ", &x, &y);
BFS(x, y);
scanf("%d %d ", &x, &y);
printf("%d\n", c[x][y]);
}
return 0;
}