Pagini recente » Cod sursa (job #1922549) | Cod sursa (job #1887484) | Cod sursa (job #2452837) | Cod sursa (job #965330) | Cod sursa (job #650876)
Cod sursa(job #650876)
#include<stdio.h>
#include<stdlib.h>
#define NMAX 100003
typedef struct Node{int info; struct Node *next;}Node;
Node *G[NMAX];
FILE *inf,*outf;
int viz[NMAX],N,M;
void citire()
{
inf=fopen("dfs.in","r");
int i,z,y;
fscanf(inf,"%d %d",&N,&M);
for(i=1;i<=M;i++)
{
fscanf(inf,"%d %d",&z,&y);
Node *p;
if(!(p=(Node*)malloc(sizeof(Node)))) return ;
p->info=y;
p->next=G[z];
G[z]=p;
}
}
void Dfs(int x,int contor)
{
Node *p;
viz[x]=contor;
for(p=G[x];p;p=p->next)
if(!viz[p->info])
{
Dfs(p->info,contor);
}
}
int main()
{
int i,contor=0,k;
outf=fopen("dfs.out","w");
citire();
for(i=1;i<=N;i++)
if(viz[i]==0) { Dfs(i,++contor); }
fprintf(outf,"%d\n",contor);
for(k=1;k<=contor;k++)
{
for(i=1;i<=N;i++) if(viz[i]==k) fprintf(outf,"%d",i); fprintf(outf,"\n");
}
fclose(inf);
fclose(outf);
return 0;
}