Cel mai scurt drum liber de urși
Să ne imaginăm un „munte” format din niveluri (), unde fiecare nivel este reprezentat printr-o matrice binară . În fiecare matrice, valorile de indică punctele care fac parte din munte, iar valorile de formează zonele din afara muntelui. Se știe că atât grupurile de , cât și cele de sunt conexe, considerând că două elemente sunt vecine dacă au o latură comună.
În plus, nivelurile muntelui sunt „concentrice”, în sensul că pozițiile cu de pe nivelul () sunt acoperite de -urile de pe nivelul . În matricea de pe ultimul nivel există un singur , care reprezintă vârful muntelui.
Deoarece punctele din interiorul fiecărui nivel sunt considerate periculoase pentru că ar putea fi zone frecventate de urși, ne dorim să urmăm această strategie:
- pornim de la orice punct de pe marginea nivelului ;
- pentru fiecare nivel, traversăm de la marginea nivelului curent la marginea nivelului următor în cel mai mic număr de pași, pe ultimul nivel, ajungem la vârf;
- traversarea marginilor este considerată sigură, deoarece urșii nu se apropie de ele din cauza fricii de înălțimi. În schimb, trecerea prin zonele interioare sunt considerată periculoasă.
Cerință
Determinați câți pași periculoși trebuie efectuați pentru a ajunge de la baza muntelui la vârf, urmând strategia descrisă.
Date de intrare
- Prima linie a fișierului de intrare
medve.in
conține un număr întreg - numărul de teste. - Prima linie a fiecărui test conține două numere întregi și - numărul de niveluri și dimensiunea matricelor
- Următoarele linii conțin câte valori binare separate prin spații, reprezentând elementele matricelor.
Date de ieșire
- Pentru fiecare test, scrieți pe o linie separată în
medve.out
numărul total de pași periculoși.
Restricții și precizări
- ;
- ;
Exemplu
medve.in
1
3 10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 1 1 1 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
medve.out
2
Explicație
Exemplul de intrare constă dintr-un singur caz de test (), care reprezintă un munte format din 3 niveluri, codificat prin matrici de dimensiune . Pe primul nivel, există un singur pas periculos pentru a ajunge la marginea nivelului 2 (). Pe nivelul 2, un alt pas periculos este necesar pentru a ajunge la poziția vârfului de pe nivelul 3 ().