Pagini recente » Cod sursa (job #346505) | Cod sursa (job #750266) | Cod sursa (job #2585545) | Cod sursa (job #1208771) | Cod sursa (job #804815)
Cod sursa(job #804815)
# include <stdio.h>
# include <string.h>
using namespace std;
struct point {int inf; point *leg;};
point *p1, *ultim, *l[100010];
int n,x,y,s,nod,i,p,u,m;
bool viz[100010];
void dfs(int x)
{
viz[x]=true;
while (l[x])
if (viz[l[x]->inf]==false)
{
dfs(l[x]->inf);
l[x]=l[x]->leg;
}
else l[x]=l[x]->leg;
}
int main()
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
memset(l,NULL,sizeof(l));
scanf("%d %d\n",&n,&m);
for (i=1; i<=m; i++)
{
p1 = new point;
scanf("%d %d\n",&x,&y);
p1->inf=y;
p1->leg=l[x];
l[x]=p1;
ultim = new point;
ultim->inf=x;
ultim->leg=l[y];
l[y]=ultim;
}
int n1=0;
for (i=1; i<=n; i++)
{
if (viz[i]==false)
{
n1++;
dfs(i);
}
}
printf("%d\n",n1);
return 0;
}