Am nevoie sa modific urmatorul cod (care reprezinta parcurgerea in latime a unui graf) astfel incat inainte sa imi afizeze drumul (adica parcurgerea propriu-zisa) sa pot introduce in afara de nodul de pornire si un nod cautat!
Deci eu trebuie sa plec de la nodul X si sa ajung la Y...iar cand ajung la Y...sa ma opresc si sa afisez drumul parcurs!
#include <iostream.h>
#include <conio.h>
void main (void)
{
int a[20][20],trecut[20],n,i,j,u,pc, m,e1,e2,x,sol[20];
cout<<"numarul de noduri: ";
cin>>n;
cout<<"numarul de muchii: ";
cin>>m;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
for (i=1;i<=m;i++)
{
cout<<"Muchia "<<i<<":\n";
cout<<"e1=";
cin>>e1;
cout<<"e2=";
cin>>e2;
a[e1][e2]=a[e2][e1]=1;
}
for (i=1;i<=n;i++)
trecut[i]=0;
cout<<"Nodul initial: ";
cin>>x;
pc=1;
u=1;
sol[1]=x;
trecut[x]=1;
while (u<n)
{
for (i=1;i<=n;i++)
if (a[sol[pc]][i] && !trecut[i])
{
u++;
sol[u]=i;
trecut[i]=1;
}
pc++;
}
cout<<"Parcurgerea BFS:";
for (i=1;i<=n;i++)
cout<<sol[i]<<',';
cout<<'\b';
getche();
}
Variabilele utilizate īn programul C++
a - matricea de adiacenţă asociată grafului;
trecut -vector Ä«n care se trec Ä«n ordine nodurileâ€parcurseâ€;
n - numărul de noduri din graf;
m - numărul de muchii din graf;
e1,e2 - extremităţile muchiilor;
i,j - contori;
x – nodul din care se „pleacăâ€;
u - variabilă (contor) ce ţine evidenţa numărului de noduri vizitate;
pc - nodul ai cărui vecini īi căutăm;
sol - vectorul rezultat īn urma parcurgerii (conţine nodurile īn ordinea vizitării lor).