Medve

Time limit: 0.5s Memory limit: 128MB Input: medve.in Output: medve.out

Cel mai scurt drum liber de urși

Să ne imaginăm un „munte” format din nn niveluri (i=1,2,,ni=1, 2, …, n), unde fiecare nivel este reprezentat printr-o matrice binară m×mm \times m. În fiecare matrice, valorile de 11 indică punctele care fac parte din munte, iar valorile de 00 formează zonele din afara muntelui. Se știe că atât grupurile de 11, cât și cele de 00 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 11 de pe nivelul ii (i=2,,ni=2, …, n) sunt acoperite de 11-urile de pe nivelul i1i−1. În matricea de pe ultimul nivel există un singur 11, 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 00;
  • 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 tt - numărul de teste.
  • Prima linie a fiecărui test conține două numere întregi nn și mm - numărul de niveluri și dimensiunea matricelor
  • Următoarele nmn \cdot m linii conțin câte mm 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

  • 1t31 \leq t \leq 3
  • 1<n<1001 < n < 100;
  • 3<m<1003 < m < 100;

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 (t=1t=1), care reprezintă un munte format din 3 niveluri, codificat prin matrici de dimensiune 10×1010 \times 10. Pe primul nivel, există un singur pas periculos pentru a ajunge la marginea nivelului 2 ([3,9][3,8][3,9]→[3,8]). Pe nivelul 2, un alt pas periculos este necesar pentru a ajunge la poziția vârfului de pe nivelul 3 ([5,5][5,6][5,5]→[5,6]).

Log in or sign up to be able to send submissions!