#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
map<int,bool> f_eat;
vector<int> plants;
vector<int> G[N];
int r[N],c[N];
int dp[N];
int res;
int dfs(int u){
if(dp[u]!=0){
return dp[u];
}
if(f_eat[u]){
return 1;
}
for(int v:G[u]){
dp[u]+=dfs(v);
}
return dp[u];
}
void solve(){
for(int i=0;i<plants.size();i++){
res+=dfs(plants[i]);
}
cout<<res<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
int u,v;
for(int i=1;i<=m;i++){
cin>>u>>v;
G[u].push_back(v);
r[v]++;
c[u]++;
}
for(int i=1;i<=n;i++){
if(r[i]==0&&c[i]==0){
continue;
}
if(r[i]==0){
plants.push_back(i);
}
if(c[i]==0){
f_eat[i]=true;
}
}
solve();
return 0;
}