Pagini recente » Cod sursa (job #2485570) | Cod sursa (job #2406092) | Cod sursa (job #3183804) | Cod sursa (job #2455051) | Cod sursa (job #884613)
Cod sursa(job #884613)
#include <cstdio>
#define MAXN 100000
#define FOR(i,a,b) for(i=a;i<=b;i++)
using namespace std;
struct graf
{
int nod;
graf *next;
};
graf *a[MAXN];
int n,m,comp;
bool marked[MAXN];
inline void read()
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
scanf("%d %d",&n,&m);
int i;
FOR(i,1,m)
{
int x,y;
scanf("%d %d",&x,&y);
graf *q=new graf;
q->nod=y;
q->next=a[x];
a[x]=q;
}
}
void dfs(int i)
{
marked[i]=true;
graf *q=a[i];
while(q)
{
if(marked[q->nod]==false)
dfs(q->nod);
q=q->next;
}
}
int main()
{
int i;
read();
FOR(i,1,n)
{
if(marked[i]==false)
{
comp++;
dfs(i);
}
}
printf("%d\n",comp);
return 0;
}