Filehost.ro - gazduire fisiere
Houssey
Un forum unde va puteti distra si vb liber despre orice...deci va astept sa postati cat mai mult posibil :))
Nou pe simpatie:
Profil angela31
Femeie
23 ani
Buzau
cauta Barbat
24 - 60 ani
HousseyReguliInregistrareLoginPozeNu sunteti logat. Lista Forumurilor Pe Tematici
Houssey / Programare in C++ /

Problema arbori&grafuri-Arborele partial de cost minim

Pagini: 1 Moderat de mihaispr
#1
mihaispr
Moderator
Postari: 68
//Determinati arborele partial de cost minim(alg.lui prim)
//Obs. Matricea e simetrica n*n
//l,c sunt extremitati,iar v este nodul de plecare, mai precis rad.arborelui
//Avem dat un graf orientat deci vom citi si afisa o matrice simetrica n*n

#include<stdio.h>
#include<conio.h>

int a[20][20],n,i,j,s,viz[20],tata[20],l,c,v,k,min,cost=0;

void cit_mat_asoc(int a[20][20],int i,int j)
{printf("Nr.de varfuri este=");scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
     {printf("na[%d][%d]=",i,j);
      scanf("%d",&a[i][j]);
      a[j][i]=a[i][j]; //intra si aceasta conditie pt.ca matr. e simetrica
      }
}

void afis_mat(int a[20][20],int i,int j)
{for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
      printf("%5d",a[i][j]);
      printf("n");
    }
}

void arbcost_min()
{printf("Nodul de plecare este=");scanf("%d",&v);
viz[v]=1;
for(k=1;k<=n-1;k++)
  {min=30000; //introd aceasta valoare cand nu exista cost intre 2muchii
   for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
     if((viz[i]==1) &&(viz[j]==0) &&(min>a[i][j]))
     {min=a[i][j];
     l=i;
     c=j;
     }
   tata[c]=l;
   viz[c]=1;
   cost=cost+a[l][c];
  }
//Afisam vectorul tata si costul
for(i=1;i<=n;i++)
printf("ntata[%d]=%d",i,tata[i]);
printf("Costul este=");
printf("%d",cost);
}

void main()
{cit_mat_asoc(a,i,j);
afis_mat(a,i,j);
arbcost_min();
getch();
}


 
   

Topicuri similare

Pagini: 1  
Mergi la