# PBinfo #4073 – ComponenteConexe5 – Rezolvare C++

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

## Enunț

Cerinţa
Se dă lista muchiilor unui graf neorientat cu n noduri și m muchii și un șir de q noduri. Să se determine pentru fiecare nod x din șir numărul de noduri din componenta conexă din care face parte x.

Date de intrare
Fişierul de intrare componenteconexe5.in conține pe prima linie numerele n m, reprezentând numărul de noduri și numărul de muchii ale grafului. Fiecare dintre următoarele m linii conține câte o pereche de numere i j, cu semnificația că există muchie între i și j.

Următoarea linie conține numărul q, iar ultima linie a fișierului de intrare conține un șir de q noduri, seprate prin câte un spațiu.

Date de ieşire
Fişierul de ieşire componenteconexe5.out va conține q linii; fiecare linie va conține numărul de noduri din componenta conexă a nodului corespunzător din șir.

Restricţii şi precizări

1 ≤ n ≤ 1000
1 ≤ i , j ≤ n
1 ≤ q ≤ 1000
1 ≤ x ≤ n

Exemplu:
componenteconexe5.in

5 3
1 2
3 5
2 4
3
2 5 1
componenteconexe5.out

3
2
3

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("componenteconexe5.in");
ofstream fout("componenteconexe5.out");
int n , m , A[1001][1001], Dim[1001], CC[1001], nrc, nrv;
void DFS(int x , int nrc)
{
	CC[x] = nrc;
	Dim[nrc] ++;
	for(int i = 1 ; i <= n ; i ++)
		if(A[x][i] == 1 && CC[i] == 0)
			DFS(i , nrc);
}
int main()
{
    int i , j;
    fin >> n >> m;
    while(m)
    {
		fin >> i >> j;
        A[i][j] = A[j][i] = 1;
        m --;
    }
    nrc = 0;
    for(int i = 1 ; i <= n ; i ++)
		if(CC[i] == 0)
		{
			nrc ++;
			DFS(i , nrc);
		}
    int q , x;
    fin >> q;
    while(q)
    {
		fin >> x;
		fout << Dim[CC[x]] << '\n';
		q --;
	}
    return 0;
}
```

## Resurse

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