Pagini recente » Cod sursa (job #2775448) | Cod sursa (job #1196799) | Cod sursa (job #1346443) | Cod sursa (job #1673589) | Cod sursa (job #1193846)
#include<stdio.h>
#include<stdlib.h>
struct nod{
int val;
nod *next;
};
nod **A;
int *viz,**C,N,M;
void citire() {
nod *nou;
int i,x,y;
scanf("%d %d",&N,&M);
A=(nod**)malloc((N+1)*sizeof(nod*));
for(i=1;i<=N;i++)
A[i]=NULL;
for(i=1;i<=M;i++) {
scanf("%d %d",&x,&y);
nou=(nod*)malloc(sizeof(nod));
nou->val=y;
nou->next=A[x];
A[x]=nou;
}
viz=(int*)calloc((N+1),sizeof(int));
}
void dfs(int x) {
nod *q;
viz[x]=1;
for(q=A[x];q!=NULL;q=q->next)
if(!viz[q->val]) dfs(q->val);
}
int main() {
int i,k=0;
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
citire();
for(i=1;i<=N;i++)
if(!viz[i]) {
k++;
dfs(i);
}
printf("%d ",k);
fclose(stdin);
fclose(stdout);
return 0;
}