Sari la conținut
Zece la Info
Probleme

Drum minim cu posibilitatea de a distruge un singur obstacol

Grea 1500 ms 64 MB#lee#bfs#coada#labirint

Se citeste o matrice reprezentand un labirint, la fel ca in problemele anterioare (caracterele '.', '#', 'S', 'F'). De aceasta data, aveti voie sa distrugeti cel mult un singur obstacol pe parcursul drumului (trecand astfel prin acea celula). Determinati, folosind algoritmul Lee extins cu o stare suplimentara (daca a fost deja folosita distrugerea), numarul minim de pasi din S in F. Daca F nu poate fi atins nici asa, afisati -1.

Date de intrare
Pe prima linie se citesc n si m, numarul de linii si de coloane ale matricei. Urmeaza n linii, fiecare continand un sir de m caractere.
Date de iesire
Se afiseaza numarul minim de pasi din S pana in F, folosind cel mult o distrugere de obstacol, sau -1.
Restrictii
1 <= n, m <= 25, matricea contine exact o celula S si o celula F

Exemple

Exemplul 1

Intrare

3 3
S#.
.#.
.#F

Iesire

4

Exemplul 2

Intrare

3 3
S..
.#.
..F

Iesire

4

Vrei să rezolvi problema?

Creează-ți un cont gratuit ca să scrii cod în editor, să trimiți soluții la evaluator și să vezi indicațiile.