Sunteți pe pagina 1din 2

Proiect Grafuri

Un exemplu de graf din lumea reala reprezinta drumurile dintre orase.


De exemplu, doresc sa aflu daca intre doua orase exista drum care le leaga.
Luand doua orase la intamplare,vrem sa stim daca exista drum intre ele.

Se da o tara in care se afla m noduri(orase). Muchiile reprezinta drumul dintre


ele.
Citind de la tastatura matricea de adiacenta a grafului si o insiruire de m noduri
aflati dacaexista drum de legatura intre ele.
(exista un lant format din nodurile citite.) Sa se afiseze toate orasele folosind o
metoda de parcurgere.

#include<iostream>
///• citim matricea de adiacenta si cele m noduri
///• verificam daca exista un lant format din cele m noduri
///• parcurgem graful folosind metoda pe latime
///• afisam rezultatul

int a[50][50];
int main()
{
int n,m,i,j,b[50],ok,prim,ultim,start,x,y,v[100],c[100];
cout<<"n= ";
cin>>n;
cout<<"m= ";
cin>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
a[j][i]=a[i][j];
}
for(i=1; i<=m; i++)
{
cout<<"b["<<i<<"]=";
cin>>b[i];

}
ok=1;
for(i=1; i<m; i++)
{
if(a[b[i]][b[i+1]]==0)
ok=0;
if(ok)
cout<<"Da";
else cout<<"Nu";
}
prim=1;
ultim=1;
cout<<"nodul de pornire";
cin>>start;
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
a[j][i]=a[i][j];
}
v[start]=1;
c[1]=start;
while(prim<=ultim)
{
for(j=1; j<=n; j++)
if(a[c[prim]][j]==1 && v[j]==0)
{
ultim++;
c[ultim]=j;
v[j]=1;
}
prim++;
}
for(i=1; i<=ultim; i++)
cout<<c[i]<<" ";
}

S-ar putea să vă placă și