# PBinfo #2707 – matad – Rezolvare C++

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

## Enunț

Cerința
Dându-se o matrice de numere întregi cu n linii și n coloane, să se verifice dacă este sau nu matrice de adiacență asociată unui graf neorientat.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi se citesc de pe n linii câte n numere naturale, separate prin spații, reprezentând elementele matricei.

Date de ieșire
Programul va afișa pe ecran valoarea 1 dacă matricea este de adiacență, sau 0 dacă nu este matrice de adiacență.

Restricții și precizări

3 ≤ n ≤ 100
Un graf neorientat nu admite nici bucle (deci nu există muchie de la un nod la el însuși) și nici muchii multiple între aceleași două noduri.

Exemplul 1:
Intrare

4
0 1 1 0
1 0 0 0
1 0 0 1
0 0 1 0
Ieșire

1
Exemplul 2:
Intrare

4
0 1 1 0
1 0 0 0
0 0 0 1
0 0 0 0
Ieșire

0

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
#define nmax 101
using namespace std;
int a[nmax][nmax], n;
void Citire()
{
    int i, j;
    cin >> n;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            cin >> a[i][j];
}
int VerifMatAd()
{
    int i, j;
    /// verifica daca pe diagonala principala este doar 0
    for (i = 1; i <= n; i++)
        if (a[i][i] != 0) return 0;
    /// verifica simetria si daca a[i][j]=0..1
    for (i = 1; i < n; i++)
        for (j = i + 1; j <= n; j++)
        {
            if (a[i][j] < 0 || a[i][j] > 1) return 0;
            if (a[i][j] != a[j][i]) return 0;
        }
    return 1;
}
int main()
{
    Citire();
    cout << VerifMatAd() << "\n";
    return 0;
}
```

## Resurse

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