#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,X[1000005],Y[1000005],f[1000005],ind[1000005],ans;
vector<int> v[1000005];
void solve(){
int cnt=n;
queue<int> q;
for(int i=1;i<=n;i++) if(!ind[i]) q.push(i);
while(q.size()){
int x=q.front();
q.pop();
cnt--;
if(!q.size()) f[x]+=cnt;
else if(q.size()==1){
bool flag=true;
for(int y:v[q.front()]) if(ind[y]==1) flag=false;
if(!flag) f[x]=-n;
else f[x]+=cnt-1;
}else f[x]=-n;
for(int y:v[x]){
ind[y]--;
if(!ind[y]) q.push(y);
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>X[i]>>Y[i];
for(int i=1;i<=m;i++){
x=X[i],y=Y[i];
v[x].push_back(y);
ind[y]++;
}
solve();
for(int i=1;i<=m;i++){
x=X[i],y=Y[i];
v[y].push_back(x);
ind[x]++;
}
solve();
for(int i=1;i<=n;i++) if(f[i]>=n-2) ans++;
cout<<ans;
}