Labirint

Time limit: 0.2s Memory limit: 64MB Input: labirint.in Output: labirint.out

Un labirint este descris ca fiind o matrice binară cu NN linii și MM coloane, cu semnificația că 00 reprezintă o poziție liberă, iar 11 reprezintă o poziție în care se află un zid. Un drum în labirint este un traseu în matrice care începe cu poziția (1,1)(1, 1) și ajunge în poziția (N,M)(N, M) 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 d0d_0 lungimea drumului minim de la poziția (1,1)(1, 1) la poziția (N,M)(N, M). Fie d(i,j)d(i, j) lungimea drumului minim de la poziția (1,1)(1, 1) la poziția (N,M)(N, M), dacă poziției (i,j)(i, j) i se atribuie valoarea 00. Observăm că dacă poziția (i,j)(i, j) conține inițial un 00, atunci d0=d(i,j)d_0 = d(i, j).

Cerință

Pentru fiecare poziție (i,j)(i, j), să se verifice dacă d(i,j)<d0d(i, j) < d_0.

Date de intrare

Pe prima linie a fișierului labirint.in se află două numere naturale NN și MM, dimensiunile matricei binare ce descrie labirintul, apoi pe următoarele NN linii se vor afla câte MM 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 NN linii, iar pe fiecare linie se vor scrie MM cifre, neseparate prin spații. Cifra a jj-a de pe linia a ii-a este 11 dacă și numai dacă d(i,j)<d0d(i, j) < d_0, altfel este 00.

Restricții și precizări

  • 1N,M1 0001 \leq N, M \leq 1 \ 000;
  • Pe pozițiile (1,1)(1, 1) și (N,M)(N, M) se vor afla valori 00.
  • Se garantează că există un drum în matricea inițială între pozițiile (1,1)(1, 1) și (N,M)(N, M).
# Punctaj Restricții
1 10 1N,M501 \leq N, M \leq 50, d0=N+M1d_0 = N + M - 1
2 30 1N,M501 \leq N, M \leq 50
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 77 poziții cu valoarea 11 în labirint care dacă se înlocuiesc cu 00 determină obținerea unui drum de lungime mai mică decât d0=14d_0 = 14.

De exemplu, dacă am înlocui valoarea din (1,2)(1, 2) cu 00, am obține un drum de lungime d(1,2)=12d(1, 2) = 12.

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