Răspuns :
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
bool matr_ad[32][32]{ true };
int noduri, muchii;
cin >> noduri >> muchii;
for (int muchie = 0; muchie < muchii; muchie++) {
int nodX, nodY;
cin >> nodX >> nodY;
matr_ad[nodX][nodY] = matr_ad[nodY][nodX] = true;
}
bool noduri_vizitate[32] = { false, true };
int comp = 1, nod_comp = 1;
while (nod_comp) {
int parcurgere[32] = { 0, nod_comp }, prim = 1, ultim = 1;
while (prim <= ultim) {
for (int nod = 1; nod <= noduri; nod++)
if (matr_ad[parcurgere[prim]][nod] && !noduri_vizitate[nod]) {
noduri_vizitate[nod] = true;
parcurgere[++ultim] = nod;
}
prim++;
}
cout << "Componenta conexa " << comp++ << " : ";
sort(parcurgere, parcurgere + ultim);
for (int nod = 1; nod <= ultim; nod++)
cout << parcurgere[nod] << ' ';
cout << '\n';
nod_comp = 0;
for (int nod = 1; nod <= noduri; nod++)
if (!noduri_vizitate[nod]) {
nod_comp = nod;
noduri_vizitate[nod] = true;
break;
}
}
return 0;
}