Pagini recente » Cod sursa (job #2467185) | Cod sursa (job #2063070) | Cod sursa (job #2757755) | Cod sursa (job #1669221) | Cod sursa (job #649428)
Cod sursa(job #649428)
#include<stdio.h>
#include<stdlib.h>
#define NMAX 100000
typedef struct Node{int info; struct Node *next;}Node;
Node *G[NMAX+1];
int viz[NMAX+1];
unsigned long n,m;
void citire()
{
FILE *inf;
inf=fopen("dfs.in","r");
unsigned long i,z,y;
fscanf(inf,"%ldu %ldu",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(inf,"%ldu %ldu",&z,&y);
Node *p;
if(!(p=(Node*)malloc(sizeof(Node)))) return ;
p->info=y;
p->next=G[z];
G[z]=p;
}
fclose(inf);
}
void Dfs(unsigned long x)
{
Node *p;
viz[x]=1;
for(p=G[x];p;p=p->next)
if(!viz[p->info])
{
viz[p->info]=1;
Dfs(p->info);
}
}
int main()
{
long i,nrcomp;
citire();
nrcomp=0;
for(i=1;i<=n;i++)
if(viz[i]==0) { nrcomp++; Dfs(i); }
FILE *outf;
outf=fopen("dfs.out","w");
fprintf(outf,"Numarul componentelor conexe este: %ld ",nrcomp);
fclose(outf);
return 0;
}