# PBinfo #1651 – Graf – Rezolvare C++

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

## Enunț

Cerința
Se dă lista muchiilor unui graf neorientat ponderat. Să se determine vârful pentru care media aritmetică a ponderilor muchiilor incidente este minimă. Dacă există mai multe vârfuri cu aceeași medie minimă, se va afișa vârful numerotat cu o valoare mai mică.

Date de intrare
Programul citește de la tastatură numerele n m, reprezentând numărul de vârfuri și numărul de muchii din graf, apoi m triplete i j p, reprezentând muchiile, date prin extremități și pondere.

Date de ieșire
Programul va afișa pe ecran numărul vf, reprezentând vârful determinat.

Restricții și precizări

1 ≤ n ≤ 100
ponderile muchiilor sunt numere naturale nenule mai mici decât 1000
graful dat nu conține noduri izolate

Exemplu:
Intrare

5 6
1 2 10
2 3 2
2 5 2
3 5 12
3 4 1
4 5 5
Ieșire

4
Explicație
Mediile ponderilor muchiilor incidente cu vârfurile grafului sunt:


pentru vârful 1 media este 10
pentru vârful 2 media este 4.66667
pentru vârful 3 media este 5
pentru vârful 4 media este 3
pentru vârful 5 media este 6.33333

Astfel media minimă este 3, pentru vârful 4

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void Citire(int & n , int A[][105])
{
    int m;
    cin >> n >> m;
    for(int i = 1; i <= n ; i ++)
        for(int j = 1 ; j <= n ; j ++)
            A[i][j] = 0;
    while(m > 0)
    {
        int i , j , p;
        cin >> i >> j >> p;
        A[i][j] = A[j][i] = p;
        m --;
    }
}
void Calcul(int n , int A[][105], int linie , int &s ,int &cnt)
{
    s = cnt = 0;
    for(int i = 1 ; i <= n ; i ++)
        if(A[linie][i] != 0)
            s += A[linie][i], cnt ++;
}
int main()
{
    int A[105][105], n;
    Citire(n , A);
    int smin = 10000000, nmin = 1 , nod;
    for(int i = 1 ; i <= n ; i ++)
    {
        int s , cnt;
        Calcul(n , A, i , s , cnt);
        if(s * nmin < smin * cnt)
            nmin = cnt , smin = s, nod = i;
        //cerr << 1.0 * s / cnt << endl;
    }
    cout << nod;
    return 0;
}
```

## Resurse

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