# PBinfo #4544 – MosCraciun5 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Moș Crăciun locuiește la polul nord și pregătește cadouri pentru copii cuminți din clasa a X-a B. Datorită încălzirii globale, gheața se topește, formându-se mai multe banchize. Harta polului nord seamănă cu o matrice cu n linii și m coloane în care elementele pot avea următoarele valori:


0 – zonă cu apă, în care gheața s-a topit;
număr natural nenul; o zonă care contine gheață. În fiecare asemenea zonă se află un cadou, iar numărul din matrice reprezintă valoarea acestui cadou;

Scrieți un program care să determine care este suma valorilor cadourilor aflate pe banchiza lui Moș Crăciun. Acesta se află pe banchiza care conține elementul aflat pe linia 1 și coloana 1.

Date de intrare
Fișierul de intrare moscraciun5.in conține pe prima linie numerele n m. Următoarele n linii conțin câte m elemente, cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire moscraciun5.out va conține pe prima linie numărul S, reprezentând valoarea totală a cadourilor aflate pe banchiza lui Moș Crăciun.

Restricții și precizări

1 ≤ n , m ≤ 100
valorile cadourilor sunt numere naturale mai mici sau egale cu 10
Moș Crăciun vă asigură că elementul aflat pe linia 1 și coloana 1 nu conține apă.

Exemplu:
moscraciun5.in

4 6
4 2 1 0 3 0
0 0 1 0 9 9
1 3 5 0 0 0
0 3 0 1 3 7
moscraciun5.out

20

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("moscraciun5.in");
ofstream fout("moscraciun5.out");
int n,m, a[102][102];
const int dx[]={0 , 0 , 1 , -1}, dy[]={1 , -1 , 0 , 0};
int S = 0; // suma cadourilor de pe banchiza lui Moș Crăciun
void fill(int i , int j)
{
    S += a[i][j];
    a[i][j] = -1;
    for(int k = 0 ; k < 4 ; k ++)
        if(a[i+dx[k]][j+dy[k]] > 0)
            fill(i+dx[k] , j+dy[k]);
}
int main(){
    fin >> n >> m;
    for(int i = 1 ; i <= n ; i ++)
        for(int j = 1 ; j <= m ; j ++)
            fin >> a[i][j];
    fin.close();
    //facem fill din pozitia initiala a lui Mos Craciun
    fill(1 , 1);
    fout << S;
    fout.close();
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4544)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4544/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4544/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
