Pagini recente » Cod sursa (job #2848505) | Cod sursa (job #1276767) | Cod sursa (job #1101832) | Cod sursa (job #3319432) | Cod sursa (job #632157)
Cod sursa(job #632157)
#include <iostream.h>
#include <values.h>
int s[30],t[30],c[30],n;
void citire_matrice ()
{
fstream fin("apm.in");
ofstream fout("apm.out");
int i,j,k,x,y;
cout<<"\n Numarul de varfuri";
fin>>n;
f.close();
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 nodul de start";
cin>>start;
s[start]=1;
for(k=1;k<=n;k++)
cost_min=MAX_INT
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_matrice();
afisare_arbore("vectorul caracteristic este" s,n);
afisare_arbore("vectorul tatilor este" T,n);
afisare_arbore("vectorul costurilor este" c,n);
}