👤

Cod c++ pentru parcurgerea in adancime a unui graf

Răspuns :

Răspuns:

Nu ai fost foarte explicit însă cred că este vorba despre implementarea algoritmului de parcurgere a unui graf neorientat (algoritmul DFS - depth-first search ) și presupune parcurgerea recursivă a vecinilor fiecărui nod care nu a fost vizitat încă. Iată codul

Explicație:

//declaram global si initializam vectorul de noduri vizitate

int viz[100] = {0};

void dfs(int nodStart, int mtxAd[100][100], int n) {

 //marcam nodul de start ca fiind vizitat

 //la urmatoarele cautari nodStart va fi urmatorul nod din parcurgere

 viz[nodStart] = 1;

 //afisam nodul curent

 cout << nodStart << " ";

 //parcurgem matricea de adiacenta

 for (int i = 0; i < n; i++) {

   //daca nodul i este adiacent cu nodul curent si nu a fost vizitat

   if (mtxAd[nodStart][i] == 1 && viz[i] == 0) {

     //apelam recursiv dfs pentru nodul i

     dfs(i, mtxAd, n);

   }

 }

}

int main() {

 //citim numarul de noduri

 int n;

 cin >> n;

 //declaram si citim matricea de adiacenta

 int mtxAd[100][100];

 for (int i = 0; i < n; i++) {

   for (int j = 0; j < n; j++) {

     cin >> mtxAd[i][j];

   }

 }

 //citim nodul de start

 int nodStart;

 cin >> nodStart;

 //apelam dfs pentru nodul de start

 dfs(nodStart, mtxAd, n);

 return 0;

}

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari