Cod sursa(job #632157)

Utilizator gabrielcristianMahalean Gabriel gabrielcristian Data 10 noiembrie 2011 14:22:50
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.58 kb
#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);
        }