Un labirint este descris ca fiind o matrice binară cu linii și coloane, cu semnificația că reprezintă o poziție liberă, iar reprezintă o poziție în care se află un zid. Un drum în labirint este un traseu în matrice care începe cu poziția și ajunge în poziția prin deplasare doar pe poziții care au valoarea 0 și sunt vecine cu poziția curentă, pe una din cele patru direcții: sus, jos, stânga, dreapta. Lungimea unui drum este egală cu numărul de poziții vizitate.
Notăm cu lungimea drumului minim de la poziția la poziția . Fie lungimea drumului minim de la poziția la poziția , dacă poziției i se atribuie valoarea . Observăm că dacă poziția conține inițial un , atunci .
Cerință
Pentru fiecare poziție , să se verifice dacă .
Date de intrare
Pe prima linie a fișierului labirint.in
se află două numere naturale și , dimensiunile matricei binare ce descrie labirintul, apoi pe următoarele linii se vor afla câte valori binare, ce reprezint˘a elementele matricei care descrie labirintul, neseparate prin spații.
Date de ieșire
în fișierul labirint.out
se vor scrie linii, iar pe fiecare linie se vor scrie cifre, neseparate prin spații. Cifra a -a de pe linia a -a este dacă și numai dacă , altfel este .
Restricții și precizări
- ;
- Pe pozițiile și se vor afla valori .
- Se garantează că există un drum în matricea inițială între pozițiile și .
# | Punctaj | Restricții |
---|---|---|
1 | 10 | , |
2 | 30 | |
3 | 60 | Fără restricții suplimentare. |
Exemplu
labirint.in
5 6
010001
000101
011001
010010
001000
labirint.out
010000
000100
001001
010010
001000
Explicație
Sunt poziții cu valoarea în labirint care dacă se înlocuiesc cu determină obținerea unui drum de lungime mai mică decât .
De exemplu, dacă am înlocui valoarea din cu , am obține un drum de lungime .