#include <stdio.h>
int x, y, awal_i, awal_j, akhir_i, akhir_j, min = 20 * 20, tanda = 0;
char maze[20][20];
void minimum_maze(int a, int b, int step); // jarak minimum
void cetak_maze(int a, int b, int step); // cetak jarak minimum
int main()
{
for (int i = 1; i <= y; i++)
{
for (int j = 1; j <= x; j++)
{
scanf(" %c", &maze
[i
][j
]); if (maze[i][j] == 'A')
{
awal_i = i;
awal_j = j;
}
if (maze[i][j] == 'B')
{
akhir_i = i;
akhir_j = j;
}
}
}
minimum_maze(awal_i, awal_j, 0);
cetak_maze(awal_i, awal_j, 0);
}
void minimum_maze(int a, int b, int step)
{
if (a < 0 || b < 0 || a > y || b > x)
{
return;
}
if (maze[a][b] == '#')
{
return;
}
if (a == akhir_i && b == akhir_j)
{
if (step < min)
{
min = step;
}
}
maze[a][b] = '#';
minimum_maze(a - 1, b, step + 1);
minimum_maze(a + 1, b, step + 1);
minimum_maze(a, b - 1, step + 1);
minimum_maze(a, b + 1, step + 1);
maze[a][b] = '.';
}
void cetak_maze(int a, int b, int step)
{
if (tanda)
{
return;
}
if (a < 0 || b < 0 || a > y || b > x)
{
return;
}
if (maze[a][b] == '#' || maze[a][b] == 'x')
{
return;
}
maze[a][b] = 'x';
cetak_maze(a - 1, b, step + 1);
cetak_maze(a + 1, b, step + 1);
cetak_maze(a, b - 1, step + 1);
cetak_maze(a, b + 1, step + 1);
maze[a][b] = '.';
if (a == akhir_i && b == akhir_j)
{
if (step != min)
{
return;
}
for (int i = 1; i <= y; i++)
{
for (int j = 1; j <= x; j++)
{
if (i == awal_i && j == awal_j)
{
}
else if (i == akhir_i && j == akhir_j)
{
}
else
{
}
if (j == x)
{
}
}
}
tanda = 1;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgeCwgeSwgYXdhbF9pLCBhd2FsX2osIGFraGlyX2ksIGFraGlyX2osIG1pbiA9IDIwICogMjAsIHRhbmRhID0gMDsKY2hhciBtYXplWzIwXVsyMF07Cgp2b2lkIG1pbmltdW1fbWF6ZShpbnQgYSwgaW50IGIsIGludCBzdGVwKTsgLy8gamFyYWsgbWluaW11bQp2b2lkIGNldGFrX21hemUoaW50IGEsIGludCBiLCBpbnQgc3RlcCk7ICAgLy8gY2V0YWsgamFyYWsgbWluaW11bQoKaW50IG1haW4oKQp7CiAgICBzY2FuZigiJWQgJWQiLCAmeCwgJnkpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0geTsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IHg7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIHNjYW5mKCIgJWMiLCAmbWF6ZVtpXVtqXSk7CiAgICAgICAgICAgIGlmIChtYXplW2ldW2pdID09ICdBJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYXdhbF9pID0gaTsKICAgICAgICAgICAgICAgIGF3YWxfaiA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1hemVbaV1bal0gPT0gJ0InKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBha2hpcl9pID0gaTsKICAgICAgICAgICAgICAgIGFraGlyX2ogPSBqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgbWluaW11bV9tYXplKGF3YWxfaSwgYXdhbF9qLCAwKTsKICAgIGNldGFrX21hemUoYXdhbF9pLCBhd2FsX2osIDApOwp9Cgp2b2lkIG1pbmltdW1fbWF6ZShpbnQgYSwgaW50IGIsIGludCBzdGVwKQp7CiAgICBpZiAoYSA8IDAgfHwgYiA8IDAgfHwgYSA+IHkgfHwgYiA+IHgpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKG1hemVbYV1bYl0gPT0gJyMnKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChhID09IGFraGlyX2kgJiYgYiA9PSBha2hpcl9qKQogICAgewogICAgICAgIGlmIChzdGVwIDwgbWluKQogICAgICAgIHsKICAgICAgICAgICAgbWluID0gc3RlcDsKICAgICAgICB9CiAgICB9CiAgICBtYXplW2FdW2JdID0gJyMnOwogICAgbWluaW11bV9tYXplKGEgLSAxLCBiLCBzdGVwICsgMSk7CiAgICBtaW5pbXVtX21hemUoYSArIDEsIGIsIHN0ZXAgKyAxKTsKICAgIG1pbmltdW1fbWF6ZShhLCBiIC0gMSwgc3RlcCArIDEpOwogICAgbWluaW11bV9tYXplKGEsIGIgKyAxLCBzdGVwICsgMSk7CiAgICBtYXplW2FdW2JdID0gJy4nOwp9Cgp2b2lkIGNldGFrX21hemUoaW50IGEsIGludCBiLCBpbnQgc3RlcCkKewogICAgaWYgKHRhbmRhKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChhIDwgMCB8fCBiIDwgMCB8fCBhID4geSB8fCBiID4geCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAobWF6ZVthXVtiXSA9PSAnIycgfHwgbWF6ZVthXVtiXSA9PSAneCcpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbWF6ZVthXVtiXSA9ICd4JzsKICAgIGNldGFrX21hemUoYSAtIDEsIGIsIHN0ZXAgKyAxKTsKICAgIGNldGFrX21hemUoYSArIDEsIGIsIHN0ZXAgKyAxKTsKICAgIGNldGFrX21hemUoYSwgYiAtIDEsIHN0ZXAgKyAxKTsKICAgIGNldGFrX21hemUoYSwgYiArIDEsIHN0ZXAgKyAxKTsKICAgIG1hemVbYV1bYl0gPSAnLic7CiAgICBpZiAoYSA9PSBha2hpcl9pICYmIGIgPT0gYWtoaXJfaikKICAgIHsKICAgICAgICBpZiAoc3RlcCAhPSBtaW4pCiAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHk7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IHg7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGkgPT0gYXdhbF9pICYmIGogPT0gYXdhbF9qKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiQSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBha2hpcl9pICYmIGogPT0gYWtoaXJfaikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIkIiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVjIiwgbWF6ZVtpXVtqXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaiA9PSB4KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0YW5kYSA9IDE7CiAgICB9Cn0=