http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1708
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
const int maxn=;
int vis[maxn],ma[maxn][maxn],ans,u,v,n,m;;
void dfs(int x)
{
vis[x]=++ans;
for(int i=;i<=n;i++){
if(!vis[i]&&ma[x][i])dfs(i);
}
}
int main()
{ while(cin>>n>>m){ ans=;
memset(vis,,sizeof(vis));
memset(ma,,sizeof(ma));
for(int i=;i<m;i++){
cin>>u>>v;
ma[u][v]=;
}
dfs();
cout<<ans<<endl;
}
}