[cpp]
#include <stdio.h>
int f1, c1, f2, c2, fil, col, mat[1000][1000];
void ReadData()
{
int n1, n2, f, c;
for (int i = 0; i <= fil - 1; i++)
for (int j = 0; j <= col - 1; j++)
mat[j] = 0;
scanf("%d", &n1);
for (int i = 1; i <= n1; i++) {
scanf("%d %d", &f, &n2);
for (int j = 1; j <= n2; j++) {
scanf("%d", &c);
mat[f][c] = -1;
}
}
scanf("%d %d", &f1, &c1);
scanf("%d %d", &f2, &c2);
}
void MakeSolu()
{
const int movfil[4] = {-1, 0, 1, 0};
const int movcol[4] = {0, 1, 0, -1};
int ax[2][1000000], ay[2][1000000], canta = 1, cantv, mov = 0, p = 0;
bool fin = false;
ax[0][0] = f1;
ay[0][0] = c1;
mat[f1][c1] = 1;
do {
p++;
cantv = 0;
for (int i = 0; i <= canta - 1; i++)
for (int j = 0; j <= 3; j++) {
int ft = ax[mov] + movfil[j];
int ct = ay[mov] + movcol[j];
if (ft >= 0 && ft < fil && ct >= 0 && ct < col)
if (mat[ft][ct] == 0) {
mat[ft][ct] = p;
ax[mov ^ 1][cantv] = ft;
ay[mov ^ 1][cantv] = ct;
cantv++;
if (ft == f2 && ct == c2)
fin = true;
}
}
mov ^= 1;
canta = cantv;
}
while (canta != 0 && !fin);
printf("%d\n", mat[f2][c2]);
}
int main()
{
scanf("%d %d", &fil, &col);
while (fil || col) {
ReadData();
MakeSolu();
scanf("%d %d", &fil, &col);
}
return 0;
}
[/cpp]
Any help would be appreciated
![:o](./images/smilies/icon_eek.gif)