Cod sursa(job #661103)
#include<stdio.h>
int n,m,conex, viz[100005];
typedef struct nod { int info;
nod *next;} pnod;
pnod *g[100005];
void DFs(int nod)
{pnod *a;
viz[nod]=1;
a=g[nod];
while (a!=NULL)
{if (viz[a->info]==0) DFs(a->info);
a=a->next;
}
}
int main()
{ int i,x,y;
pnod*a;
FILE* f=fopen("dfs.in", "r");
fscanf (f,"%d %d", &n,&m);
for (i=1;i<=m;i++) {
fscanf(f,"%d %d", &x, &y);
a=new nod;
a->info=y;
a->next=g[x];
g[x]=a;
a=new nod;
a->info=x;
a->next=g[y];
g[y]=a;
}
for (i=1;i<=n;i++)
if (viz[i]==0) {
conex++;
DFs(i);}
FILE* g=fopen("dfs.out", "w+");
fprintf (g,"componente conexe %d\n",conex);
fclose(f);
fclose(g);
return 0;
}