Grad Extern Intern

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

#include <stdio.

h>

void Citire ( int *nv, int *vf, int a[20][20])

FILE*f;

f=fopen("graf.txt", "r");

if ( f != NULL)

fscanf (f, "%d", &*nv);

for (int i=0; i<*nv; i++)

for (int j=0; j<*nv; j++)

fscanf (f, "%d", &a[i][j]);

fscanf (f, "%d", &*vf);

fclose(f);

else printf ("Fisierul nu exista");

void afisare(int a[][20], int n)

int i, j;

for ( i = 0; i < n; i++)

for (j = 0; j < n; j++)

printf("%d ", a[i][j]);

printf("\n");
}

void Grad (int a[20][20], int nv, int vf, int *gi, int *ge ) //graedul extern se afla ca suma elemntelor liniei

int se=0;

for (int j=0; j<nv; j++)

se=se+a[vf][j];

*ge=se;

int si=0;

for (int i=0; i<nv; i++)

si=si+a[i][vf];

*gi=si;

int main ()

int a[20][20], nv, vf, gi, ge;

Citire (&nv, &vf, a);

afisare (a, nv);

Grad (a, nv, vf, &gi, &ge);

printf ("%d ", gi);


printf ("%d ", ge);

#include <stdio.h>

typedef struct {

int x;

int y;

int cost;

} muchie;

void Citire ( int *nm, int *nv, muchie v[30] )

FILE *f;

f = fopen ("graf.txt", "r");

fscanf (f, "%d", &*nm);

fscanf (f, "%d", &*nv);

for ( int i =0; i<*nm; i++)

fscanf (f, "%d", &v[i].x);

fscanf (f, "%d", &v[i].y);

fscanf (f, "%d", &v[i].cost);

void Sortare ( int nm, int nv, muchie v[30])


{

for (int i=0; i<nm-1; i++)

for (int j=i+1; j<nm; j++)

if ( v[i].cost > v[j].cost)

muchie aux;

aux = v[i];

v[i] = v[j];

v[j] = aux;

void Kruskal ( int nm, int nv, muchie v[30], int viz[30], int *c)

int i=0;

for(int k=1; k<=nv-1; k++)

while (viz[v[i].x] == viz[v[i].y] && viz[v[i].x] != 0)

i++;

*c=*c+v[i].cost;

printf ("\n%d %d", v[i].x, v[i].y);

if ( viz[v[i].x] == 0 && viz[v[i].y] == 0)

viz[v[i].x] = viz[v[i].y] = v[i].x;

else

if (viz[v[i].x] == 0 || viz[v[i].y] == 0)

viz[v[i].x] = viz[v[i].y] = viz[v[i].x] + viz [v[i].y];

else

{
for (int j=1; j<=nv; j++)

if (viz[j] == viz[v[i].x] && j != v[i].x )

viz[j] = viz[v[i].y];

viz[v[i].x] = viz[v[i].y];

i++;

int main ()

int nm, nv, viz[30] = {0}, c = 0;

muchie v[30];

Citire (&nm, &nv, v);

Sortare ( nm, nv, v);

for (int i=0; i<nm; i++)

printf ("\n %d %d %d ", v[i].x, v[i].y, v[i].cost);

Kruskal ( nm, nv, v, viz, &c );

printf ("\n%d ", c);

You might also like