Pagini recente » Cod sursa (job #1521878) | Cod sursa (job #1935751) | Cod sursa (job #1998291) | Cod sursa (job #1625157) | Cod sursa (job #631631)
Cod sursa(job #631631)
#include <iostream>
#include <values>
int S[30],T[30],C[30],a[30][30],n;
void citire_matrice()
{ int i,j,x,y,k,;
cout<<"\n Numarul de varfuri";
cin>>n;
for (i=1;i<=n;i++)
a[i][i]=0;
for (i=1;i<=n-1;i++)
for (j=n+1;j<=n;j++)
{cout<<"/n Dati costul muchiei ("<<i<<","<<j<<"):";
cin>>a[i][j];
a[j][i]=a[i][j];}
}
voi afisare_matrice()
{ int i,j;
cout<<"/n matricea de adiacenta este: /n";
for (i=1;i<=n;i++)
{
cout<<"\n";
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
}
void afisare_arbore (char mesaj[20],int v [20], int n)
{
int i;
cout<<endl<<mesaj;
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
}
void formare_arbore()
{
int k,i,j,start,cost_min,n1,n2;
for (i=1;i<=n;i++)
S[i]=T[i]=C[i]=0;
cout<<"/n Dati varful de start";
cin>>start;
S[start]=1;
for (k=1;k<=n;k++)
{
cost_min=INTMAX;
n1=n2=-1;
for (i=1;i<=n;i++)
if(S[i]=1 && S[j]=0)
if (a[i][j])
if (a[i][j]<cost_min)
{
cost_min=a[i][j];
n1=i; n2=j;
}
S[n2]=1;
T[n2]=n1;
C[n2]=a[n1][n2];
}
}
void main()
{
citire_matricea();
afisare_matricea();
formare_arbore();
afisare_arbore("vectorul caracteristic S este ",S,n);
afisare_arbore("vectorul parintilor T este ",T,n);
afisare_arbore("vectorul costurilor C este ",C,n);
}