Pagini recente » Cod sursa (job #132736) | Cod sursa (job #2105806) | Cod sursa (job #962011) | Cod sursa (job #2295026) | Cod sursa (job #651192)
Cod sursa(job #651192)
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define max 100001
#define maxm max*(max-1)/2
FILE *f;FILE *h;
int n,m,v[max],nc;
typedef struct node
{int info;
struct node *next;
}node;
node *list[max];
void add(int x,int y)
{node *nod;
if(!(nod=(node *)malloc(sizeof(node)) ) )
return 0;
nod->info=y;
nod->next=list[x];
list[x]=nod;}
void init()
{int index,x,y;
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for(index=1;index<=m;index++)
{fscanf(f,"%d %d",&x,&y);
add(x,y);
add(y,x);}
}
void dfs(int index)
{v[index]=1;
node *d;
nod=list[index];
while(nod)
{if(v[nod->info]==0)
dfs(nod->info);
nod=nod->next;}
}
int main()
{int index;
nc=0;
f=fopen("dfs.in","r");
h=fopen("dfs.out","w")
init();
for(index=1;index<=n;index++)
if(v[index]==0)
{dfs(index);
nc++;}
fprint(h,"%d",nc);
fclose(f);
fclosel(h);
return 0;
};