Pagini recente » Cod sursa (job #700033) | Cod sursa (job #1682486) | Cod sursa (job #1880764) | Cod sursa (job #1731446) | Cod sursa (job #651314)
Cod sursa(job #651314)
#include<stdio.h>
#define MAXNOD 100005
typedef struct Nod{int info; struct Nod *next;} Nod;
Nod *G[MAXNOD];
int vizitat[MAXNOD],N,M;
void dfs(int x)
{
Nod *p;
vizitat[x]=1;
for(p=G[x];p;p=p->next) if(!vizitat[p->info]) dfs(p->info);
}
int main()
{
FILE *intrare,*iesire;
int i,x,y,compcon=0;
intrare=fopen("dfs.in","r");
fscanf(intrare,"%d %d",&N,&M);
for(i=1;i<=M;i++)
{
Nod *p,*q;
fscanf(intrare,"%d %d",&x,&y);
if(!(p=(Nod*)malloc(sizeof(Nod)))) return 1;
p->info=y;
p->next=G[x];
G[x]=p;
if(!(q=(Nod*)malloc(sizeof(Nod)))) return 1;
q->info=x;
q->next=G[y];
G[y]=q;
}
iesire=fopen("dfs.out","w");
for(i=1;i<=N;i++) if(vizitat[i]==0) { compcon++; dfs(i); }
fprintf(iesire,"%d",compcon);
fclose(intrare);fclose(iesire);
return 0;
}