Cod sursa(job #651014)

Utilizator ramona.zahariaRamona ramona.zaharia Data 19 decembrie 2011 16:36:43
Problema Componente tare conexe Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>

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

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

/* afisarea componentelor tare conexe */

int conex_tare()
{ /* Roy Warshall */
int i,j,k;
int ok;
ok=1;
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(d[i][k] && d[k][j])
d[i][j]=1;

for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(d[i][j]==0)
ok=0;
return ok;
}

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


int main()
{ int i;
citire();
if(conex_tare())
printf("este tare conex\n");
else printf("nu este tare conex\n");
df(1);
for (i=1; i<=n; i++)
if(viz[i]==0)
{ printf("\n"); df(i); }
printf("\n");
return 0;
}