# PBinfo #4638 – Dmaxk – Rezolvare C++

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

## Enunț

Cerința
Se dă un graf neorientat cu n vârfuri, m muchii și un vârf k.  Să se determine vârfurile cele mai îndepărtate de vârful k.

Date de intrare
Programul citește de la tastatură numărul n de noduri, numărul m de muchii și vârful k, iar apoi lista arcelor, formată din m perechi de forma i j, cu semnificația că există muchi de la nodul i la nodul j.

Date de ieșire
Programul va afișa pe ecran în ordine crescătoare și separate prin câte un spațiu vârfurile care se află la distanță maximă față de vârful k.

Restricții și precizări

1 ≤ k ≤ n ≤ 100
1 ≤ m ≤ 1000
vârfurile la care nu se poate ajunge din k nu se iau în considerare
distanța dintre două vârfuri este egală cu lungimea celui mai scurt lanț care le are ca extremități

Exemplu:
Intrare

10 12 6
1 2
1 7
1 10
2 4
2 5
2 6
3 4
4 5
5 6
7 8
8 10
9 10
Ieșire

8 9
Explicație
Vârfurile 8 și 9 se află la distanță 4 față de vârful 6 și aceasta este distanța maximă.

## Cod sursă C++

```cpp
#include <iostream>
#include <queue>
using namespace std;
int n,m,A[101][101],k,D[101],P[101],dmax;
queue<int> Q;
void BF(int i)
{
    P[i]=1;
    D[i]=0;
    Q.push(i);
    while(!Q.empty())
    {
        i=Q.front();
        Q.pop();
        for(int j=1;j<=n;j++)
        if(!P[j] && A[i][j]==1)
        {
            P[j]=1;
            D[j]=D[i]+1;
            Q.push(j);
        }
    }
}
int main()
{
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        A[x][y]=A[y][x]=1;
    }
    BF(k);
    for(int i=1;i<=n;i++)
        if(D[i]>dmax)
            dmax=D[i];
    //cout<<dmax;
    for(int i=1;i<=n;i++)
        if(D[i]==dmax)
                cout<<i<<" ";
    return 0;
}
```

## Resurse

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