#include<bits/stdc++.h>
using namespace std;
int r[100000],M,n,sum[100000];
struct point{
int c[10000],chu;
int is;
int ans;
}p[10000];
bool k[5005];
void tuopu(){
int ss=n;
while(ss>=0){
for(int i=1;i<=n;i++){
if(k[i]!=true&&r[i]==0){
k[i]=true;
int q=0;
while(p[i].c[q]!=0){
r[p[i].c[q]]--;
p[p[i].c[q]].ans+=p[i].ans;
q++;
}
}
}
ss--;
}
return;
}
bool cmp(point A,point B){
return A.ans>B.ans;
}
int main(){
cin>>n>>M;
int a,b;
for(int i=0;i<M;i++){
cin>>a>>b;
r[b]++;
p[a].c[p[a].is]=b;
p[a].is++;
p[a].chu++;
}
int l=1;
for(int i=1;i<=n;i++){
if(r[i]==0){
p[i].ans=1;
}
if(p[i].chu==0&&r[i]!=0){
sum[l]=i;
l++;
}
}
tuopu();
anss=0;
for(int i=1;i<=l;i++){
anss+=p[sum[i]].ans;
}
cout<<anss;
return 0;
}
就结构体的p与c数组没法开大了(