Vous êtes sur la page 1sur 4

//Podu' lui Prufferr

//-pentru reprezentarea/implementarea a unui arbore


<iostream>
using namespace std;
void citire()
{
int n;
cin>>n;
for(int i=1;i<=n-1;i++)
{
cin>>x>>y; a[x][y]=1; a[y][x]=1;
d[x]++; d[y]++;
}
}
int parinte(int x)
{
for(int j=1;j<=n;j++)
if(a[x][j]!=0) return j;
return 0;
}
void prufferr()
{
int x=frunza();
int y=parinte(x);
int k=1; int i=1;
while(k<n-1)
{
t[i]=x;
pt[i]=y;
d[x]--;d[y]--;
a[x][y]=o; a[y][x]=0;
x=frunza();
y=parinte(x);
k++
}
}
main()
{
citire();
prufferr();
for( int i=1;i=n-1;++)
cout<<pf[i]
}
//-det arboreli asociat

Kruskal
Void citire()
.
.
.
Void sortare()
{muchie aux;
For i=1,n
For j=1,n
If(v[i][j]

Exemplu Kruskal

Acesta este graful original. Numerele de pe muchii reprezint


costul acestora. Nici o muchie nu este evideniat.

AD i CE sunt cele mai scurte muchii, de cost 5, iar AD a fost


arbitrar aleas, deci este evideniat.

CE este muchia de cost minim care nu formeaz un ciclu, deci


este evideniat.

Urmtoarea muchie, DF, de cost 6, este evideniat n acelai fel.

Urmtoarele muchii de cost minim sunt AB i BE, de cost


7. AB este aleas arbitrar i este evideniat. Muchia BD este
marcat cu rou, deoarece ar forma ciclul ABD dac ar fi aleas.

Procesul continu cu evidenierea urmtoarei muchii, BE, de cost


7. Mai multe muchii sunt marcate cu rou la acest pas: BC,
deoarece ar forma ciclul BCE, DE, deoarece ar forma
ciclul DEBA i FE deoarece ar forma ciclul FEBAD.

n sfrit, procesul se ncheie cu muchia EG de cost 9, iar


arborele parial de cost minim este gsit.

Vous aimerez peut-être aussi