Teseu derrotou a besta! O Minotauro caiu, mas o som da batalha alertou os guardas do Rei Minos. Agora, o herói precisa escapar do complexo Labirinto de Creta antes que as saídas sejam seladas para sempre.
O labirinto é representado por uma matriz de tamanho M x
N. - Células contendo + representam paredes de
pedra intransponíveis. - Células contendo . representam
corredores vazios onde Teseu pode pisar.
Você recebe as coordenadas iniciais de Teseu: X e Y. Em um passo, ele pode se mover para uma célula adjacente (Cima, Baixo, Esquerda ou Direita), desde que não seja uma parede e não saia dos limites do mapa.
O objetivo é encontrar a saída mais próxima. Uma
“saída” é definida como qualquer célula vazia (.) que
esteja na borda do labirinto (ou seja, na primeira
linha, última linha, primeira coluna ou última coluna).
A posição inicial de Teseu (entrada) NÃO conta como uma saída. Mesmo que Teseu comece em uma célula na borda, ele deve se mover para encontrar um ponto de fuga distinto. Isso significa que a distância mínima nunca será 0.
Sua tarefa é retornar o número mínimo de passos para Teseu escapar. Se não houver caminho possível para nenhuma saída (Teseu está encurralado), retorne -1.
A entrada é composta por diversas linhas:
A primeira linha contém dois inteiros M e N (), representando o número de linhas e colunas do labirinto.
As próximas M linhas contêm, cada uma, uma string de
N caracteres (+ ou .),
descrevendo a estrutura do labirinto. Não há espaços entre as
células de uma mesma linha.
A última linha contém dois inteiros X e Y, indicando a posição inicial de Teseu.
Imprima um único número inteiro: a quantidade mínima de passos para alcançar uma saída válida. Se for impossível escapar, imprima -1.
Entrada:
4 3
+.+
...
+.+
+.+
1 2
Saída:
2
Entrada:
3 3
+.+
...
+.+
1 1
Saída:
1
Entrada:
2 3
+.+
.+.
0 1
Saída:
-1
Entrada:
3 4
+...
++..
+...
0 1
Saída:
1