Documente Academic
Documente Profesional
Documente Cultură
-se citeste nodul de plecare, care se considera vizitat si se trece in coada pe prima pozitie;
-se trec in coada toate nodurile nevizitate pana in prezent si sunt adiacente cu nodul de plecare(odata
cu trecerea lor in coada se marcheaza ca fiind vizitate);
-se trece la urmatorul element din coada, care ia rolul nodului de plecare si se reia pasul anterior;
….
#include<iostream.h>
int i, n, j, u,p,pl;
void main() {
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)cin>> a[i][j]
while(p<=u){ for(j=1;j<=n;j++)
if((a[coada[p]][j]==1)&&(viz[j]==0)) {
u++;coada[u]=j;
viz[j]=1;}
p++;}
for(i=1; i<=u;i++)
cout<<coada[i]<<” “;}
PARCURGEREA IN LATIME –RECURSIV
-are un parametru formal, i, care reprezinta pozitia curenta la care s-a ajuns in coada;
-procedeaza astfel:
-se parcurg nodurile grafului, cu j: Daca j este adiacent cu nodul curent din coada si j este
nevizitat se adauga la coada si se marcheaza ca fiind vizitat;
#include<iostream.h>
int i, n, j, u, pl, m, x, y;
void parc_latime(int i)
{for(j=1;j<=n;j++)
if((a[coada[i]][j]==1)&&(viz[j]==0)) {
if(i<=u) parc_latime(i+1);}
void main() {
for(i=1;i<=m;i++){cout<<”x y “; cin>>x>>y;
a[x][y]=1; a[y][x]=1;}
parc_latime(1);
for(i=1; i<=u;i++)
cout<<coada[i]<<” “;}
PARCURGEREA IN adancime (DF DEPTH FIRST)–RECURSIV
-procedeaza astfel:
#include<conio.h>
#include<iostream.h>
{cout<<pl<<” “;
viz[pl]=1;
for(int j=1;j<=n;j++)
if((a[pl][j]==1)&&(viz[j]==0))
parc_adancime(j);}
void main() {
for(i=1;i<=m;i++){cout<<”x y “; cin>>x>>y;
a[x][y]=1; a[y][x]=1;}
parc_adancime(pl);
\\verificati daca graful e conex
int ok=0;
if(ok)cout<<”nu e conex”;
int nr=0;
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("date.in");
int a[20][20],n, viz[20];
void parc_adancime(int pl)
{cout<<pl<<" ";viz[pl]=1;
for(int j=1;j<=n;j++)
if((a[pl][j]==1)&&(viz[j]==0))
parc_adancime(j);
}
int main() {int i,j,nr=0;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
for (i=1; i<=n; i++) if(viz[i]==0){nr++; cout<<"componenta "<<nr<<": ";
parc_adancime(i);
cout<<endl;}
cout<<endl<<"nr comp conexe = "<<nr;
return 0;}