Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema Drumuri C++  (Citit de 2033 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
hunteriuly
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 11



Vezi Profilul
« : Octombrie 21, 2009, 18:01:11 »

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!

Cod:
#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).
 
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Octombrie 21, 2009, 18:28:37 »

Adauga  la conditia
Cod:
 u < n && !trecut[y]
Cat timp u < n si nu am trecut de y atunci continua Very Happy
Mie mi se pare ca ai luat de undeva codul, sau nu l-ai inteles , faci tot algoritmul corect dar nu sti sa pui un stop ?
Memorat
hunteriuly
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 11



Vezi Profilul
« Răspunde #2 : Octombrie 21, 2009, 18:32:11 »

Adauga  la conditia
Cod:
 u < n && !trecut[y]
Cat timp u < n si nu am trecut de y atunci continua Very Happy



si cum introduc nodul cautat....?
Trebuie sa introduc si nodul de plecare si nodul la care trebuie sa ajung(nodul cautat)...iar atunci cand am ajuns la nodul cautat trebuie sa afisez prin ce noduri am trecut pana atunci


dupa cout<<"nodul initial: ";
       cin>>x;

scriu cout<<"nodul cautat: "
       cin>>y;

Deci conditia de oprire este ajungerea la nodul cautat...si afisarea celorlalte noduri prin care am trecut! si atat
« Ultima modificare: Octombrie 21, 2009, 18:45:34 de către Voicu Iulian » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines