Implementarea parcurgerii în lăţime pentru un graf neorientat
#include "stdio.h"
#include "conio.h"
int a[20][20],n;
void parc_latime()
{
int c[20],p,u,v,viz[20],im,nod;
printf("Dati nodul de pornire pentru parcurgere: ");
scanf("5d",&in);
for(nod=1;nod <= n; nod++)
viz[nod]=0;
p=1;u=1;
//traversarea începe cu nodul in; şirul c va păstra ordinea de traversare
c[1]=in;
//marcăm nodul in ca vizitat
viz[in]=1;
while(p <= u)
{
//vom căuta vecinii nodului v
v=c[p];
for(nod=1;nod <= n;nod++)
//dacă există muchie între nodul nod şi nodul v şi
//nodul nod nu a fost vizitat
if((a[v][nod]==1)&&(viz[nod]==0))
{
//incrementăm indicele şirului ce conţine traversarea
u++;
//punem nodul în şirul ce conţine traversarea
c[u]=nod;
//marcăm nodul ca vizitat
viz[nod]=1;
}
//vom căuta vecinii următorului nod din şirul ce conţine traversarea
p++;
}
for (ind=1;ind <= n;ind++)
printf("%d ",c[ind]);
putchar("\n");
}
void main()
{
int x,y,i,j,m;
printf("Introduceti numărul de noduri n=");
scanf("%d",&n);
printf("Introduceti numărul de muchii m=");
scanf("%d",&m);
for(i=1;i <= n;i++)
for(j=1;j <= n;j++)
a[i][j]=0;
for (i=1;i <= m;i++)
{
printf("De la nodul: ");
scanf("%d",&x);
printf("La nodul: ");
scanf("%d",&y);
a[x][y]=a[y][x]=1;
}
parc_latime();
getchQ;
}