#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
const int inf = 0x3f3f3f3f;
int mp[200][200];
void init(){
for(int i = 0;i<=100;++i){
for(int j = 0;j<=100;++j){
mp[i][j] = inf;
}
}
}
void floyd(){
int k,i,j;
for(int k = 1;k<=n;++k){
for(int i = 1;i<=n;++i){
for(int j = 1;j<=n;++j){
if(mp[i][j]>mp[i][k]+mp[k][j]){
mp[i][j] = mp[i][k]+mp[k][j];
}
}
}
}
}
int main(){
scanf("%d%d",&n,&m); init();
for(int i = 1;i<=m;++i){
int u,v;
scanf("%d%d",&u,&v);
mp[u][v] = 1;
}
floyd();
int cnt = 0;
for(int i =1;i<=n;++i){
int flag = 0;
for(int j = 1;j<=n;++j){
if(mp[i][j]==inf&&mp[j][i]==inf&&i!=j){
flag = 1;
}
}
if(!flag){
cnt++;
}
}
cout<<cnt<<endl;
}