Pagini recente » Cod sursa (job #1438080) | Cod sursa (job #1321843) | Cod sursa (job #1176398) | Cod sursa (job #1176006) | Cod sursa (job #632133)
Cod sursa(job #632133)
#include<iostream.h>
#include<values.h>
int S[30],T[30],C[30],a[30][30],n;
void citire_mesaj()
{
int i,j,k,x,y;
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=i+1;j<=n;j++)
{
cout<<"\n Dati costul muchiei ("<<i<<","<<j<<"):";
cin>>a[i][j];
a[j][i]=a[i][j];
}
}
void 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-1;k++)
{
cost_min=MAXINT;
n1=n2=-1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
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_matrice ();
afisare_matrice ();
formare_arbore ();
afisare_arbore("vectorul caracterestic S este",S,n);
afisare_arbore("vectorul parintilor T este",T,n);
afisare_arbore("vectorul costurilor C este",C,n);
}