Pagini recente » Cod sursa (job #96577) | Cod sursa (job #2164917) | Cod sursa (job #2494287) | Cod sursa (job #1232576) | Cod sursa (job #305986)
Cod sursa(job #305986)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VMAX 100010
#define EMAX 1000010
int start[EMAX],target[EMAX],prev[EMAX],last[VMAX];
char viz[VMAX];
int edgeNo,nodeNo;
void dfs(int node)
{
int i;
for (i=last[node];i>=0;i=prev[i])
if (!viz[target[i]])
{
viz[target[i]]=1;
dfs(target[i]);
}
}
int main()
{
int i,x,y,pop,push,cc=0;
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
scanf("%d %d",&nodeNo,&edgeNo);
for (i=0;i<nodeNo;i++) last[i]=-1;
for (i=0;i<edgeNo;i++)
{
scanf("%d %d",&x,&y);x--;y--;
start[2*i]=x;target[2*i]=y;prev[2*i]=last[x];last[x]=2*i;
start[2*i+1]=y;target[2*i+1]=x;prev[2*i+1]=last[y];last[y]=2*i+1;
}
for (i=0;i<nodeNo;i++)
if (!viz[i])
{
dfs(i);
cc++;
}
printf("%d\n",cc);
fclose(stdout);
return 0;
}