Pagini recente » Cod sursa (job #383562) | Cod sursa (job #412686) | Cod sursa (job #24501) | Cod sursa (job #2044635) | Cod sursa (job #1142880)
#include <stdio.h>
using namespace std;
int vf[200001], nr=0, urm[200001], lst[200001],cnt=0;
bool viz[100011];
inline void adauga(int x, int y)
{
++nr;
vf[nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
}
void dfs(int x)
{
viz[x]=true;
int y,p;
p=lst[x];
while (p!=0)
{
y=vf[p];
if(!viz[y]) dfs(y);
p=urm[p];
}
}
int main()
{
int n,m,x,y;
FILE * in, *out;
in=fopen ("dfs.in","r");
out=fopen ("dfs.out","w");
fscanf(in,"%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
fscanf(in,"%d%d",&x,&y);
adauga(x,y);
}
for(int i=1;i<=n;i++)
{
if(viz[i]==0)
{
dfs(i);
cnt++;
}
}
fprintf(out,"%d",cnt);
return 0;
}