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
|
| #1 |
|
|
//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(); }
|
|
| |
|