# PBinfo #4639 – cck11 – Rezolvare C++

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

## Enunț

Cerința
Se dă un graf neorientat cu n vârfuri și m muchii prin lista muchiilor și un număr natural k.  Afișați numărul de componente conexe care sunt formate din k vârfuri.

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

Date de ieșire
Programul va afișa pe ecran numărul c, reprezentând numărul de componente conexe care sunt formate din k vârfuri.

Restricții și precizări

1 ≤ k ≤ n ≤ 100

Exemplu:
Intrare

14 19 4
1 3
3 5
5 7
7 1
2 6
6 8
8 2
1 4
4 6
4 8
4 2
1 8
2 9
9 6
10 11
11 12
12 13
13 10
10 13
Ieșire

1
Explicație
Graful are 3 componente conexe {1,2,3,4,5,6,7,8,9}, {10,11,12,13} și {14}, deci există o componentă cu 4 vârfuri.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int A[101][101],n,m,S[101],c,k,C[101],nc;
void DF(int v, int c)
{
    S[v]=c;
    for(int i=1;i<=n;i++)
        if(!S[i] && A[v][i])
            DF(i,c);
}
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;
    }
    for(int i=1;i<=n;i++)
        if(!S[i])
        {
            nc++;
            DF(i,nc);
        }
    //for(int i=1;i<=n;i++)
        //cout<<S[i]<<" ";
    for(int i=1;i<=n;i++)
        C[S[i]]++;
    for(int i=1;i<=nc;i++)
        if(C[i]==k)
            c++;
    cout<<c;
    return 0;
}
```

## Resurse

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