Sunteți pe pagina 1din 1

using namespace std;

ofstream g("lee.out");
int a[20][20], dx[9]={0, -1, -1, 0, 1, 1, 1, 0, -1}, dy[9]={0, 0, 1, 1, 1, 0, 1, -1, -1},
c[3][20], OK, i, j, x, y, xx, yy, p, u, n, xi, yi, xf, yf;
int main()
{
freopen ("lee.in", "r", stdin);
scanf("%d %d %d %d %d", &n, &xi, &yi, &xf, &yf);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
scanf ("%d", &a[i][j]);
c[1][1]=xi; c[2][1]=yi;
a[xi][yi]=1;
OK=1;
p=u=1;
g<<c[1][u]<<' '<<c[2][u]<<'\n';
while (p<=u && OK)
{
xx=c[1][p];
yy=c[2][p];
for (i=1; i<=8; i++)
{
x=dx[i];
y=dy[i];
if (a[xx+x][yy+y]==-1)
{
u++;
c[1][u]=xx+x;
c[2][u]=yy+y;
a[xx+x][yy+y]=a[xx][yy]+1;
//g<<xx<<' '<<yy<<'-'<<a[xx+x][yy+y]<<'-'<<c[1][u]<<' '<<c[2][u]
<<'\n';
if (c[1][u]==xf && c[2][u]==yf) { OK=0;i=9;}
}
}
p++;
}
if (OK==0) { for (i=1; i<=n; i++)
{ for (j=1; j<=n; j++)
g<<a[i][j]<<' ';
g<<'\n';
}
g<<a[xf][yf]-1<<'\n';
}
else g<<"imposibil";
return 0;
}

S-ar putea să vă placă și