04 iunie 2010

Componentele conexe ale unui graf neorientat

Program in C care afla componentele conexe dintr-un graf neorientat, folosind o parcurgere DFS. Din fisierul graf.txt se citesc numarul de noduri si perechile de noduri reprezentand fiecare muchie.

#include "stdio.h"

int n, a[20][20], viz[20];

void citire()
{ FILE * f = fopen("graf.txt","r");
fscanf(f,"%d", &n); int i,j;
while(!feof(f))
{ fscanf(f,"%d %d", &i, &j);
a[i][j]=1; a[j][i]=1; a[i][i]=1; a[j][j]=1; }
}

/* afisare componente conexe pt graf neorientat */

void df(int vf)
{ int i; viz[vf]=1;
printf("%d ",vf); //afisare
for(i=1; i<=n; i++)
if(a[vf][i]==1 && viz[i]==0)
df(i);
}


int main()
{ int p,i; p=0;
citire();
for (i=1; i<=n; i++)
if(viz[i]==0)
{ df(i); printf("\n"); p++; }
if(p==1)
printf(" graf conex\n");
else
printf("are %d componente conexe\n", p);
return 0;
}

Niciun comentariu: