# PBinfo #4204 – esteArbore – Rezolvare C++

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

## Enunț

Cerința
Verificați dacă un graf este arbore sau nu.

Date de intrare
Fișierul de intrare estearbore.in conține pe prima linie numărul de noduri n, iar pe următoarele linii perechi de numere x y, separate printr-un spațiu, cu semnificația că există muchie de la nodul x la nodul y. 

Date de ieșire
Fișierul de ieșire estearbore.out va conține pe prima linie cuvântul DA dacă graful poate fi arbore, sau cuvântul NU dacă graful nu este arbore.

Restricții și precizări

1 ≤ n ≤ 100
1 ≤ x, y ≤ n 
muchiile se pot repeta

Exemplu:
estearbore.in

5
1 3
2 4
3 1
3 5
4 2
4 5
estearbore.out

DA
Explicație
Graful poate fi arbore.

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("estearbore.in");
ofstream fout("estearbore.out");
const int nm=102;
int  n, m, i, j, ok=1;
char a[nm][nm], v[nm] ;
int pa(int x)
{
    int i;
    v[x]=1;
    for(i=1; i<=n; i++)
        if(a[x][i]==1 and v[i]==0)pa(i);
}
int main()
{
    fin >> n;
    while(fin >> i >> j)
    {
        if(a[i][j]==0)m++;
        a[i][j] = a[j][i] = 1;
    }
    if(n!=m+1)fout<<"NU";
        else
        {
            pa(1);
            for(i=2; i<=n; i++)
                if(v[i]==0)ok=0;
            if(ok)fout << "DA";
                else fout << "NU";
        }
    return 0;
}
```

## Resurse

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