← Home
#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;
}