#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int to[N],ne[N],fi[N],tot,n,m,id[N],num[N],top,st[N],in[N],l[N],d[N],du[N],sum,cnt;
inline void ad(int x,int y)
{
to[++tot]=y;
ne[tot]=fi[x];
fi[x]=tot;
return ;
}
inline void dfs(int x,int fa)
{
l[x]=d[x]=++cnt;
st[++top]=x;
in[x]=1;
for(int i=fi[x];i;i=ne[i])
{
int y=to[i];
if(y && y!=fa)
{
if(!d[y])
{
dfs(y,x);
l[x]=min(l[x],l[y]);
}
else if(in[y])
{
l[x]=min(l[x],d[y]);
}
}
}
if(l[x]==d[x])
{
sum++;
while(st[top]!=x)
{
in[st[top]]=0;
id[st[top]]=sum;
num[sum]++;
st[top]=0;
top--;
}
in[st[top]]=0;
id[st[top]]=sum;
num[sum]++;
st[top]=0;
top--;
}
}
int main()
{
cin>>n>>m;
int x,y,z;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
ad(x,y);
}
for(int i=1;i<=n;i++)
{
if(!d[i])
dfs(i,0);
}
for(int i=1;i<=n;i++)
for(int j=fi[i];j;j=ne[j])
if(id[to[j]]!=id[i])
du[id[i]]++;
int ans=0,fl=0;
for(int i=1;i<=sum;i++)
{
if(!du[i])
{
if(fl)
{
cout<<0<<endl;
return 0;
}
else
{
ans=num[i];
fl=1;
}
}
}
cout<<ans<<endl;
return 0;
}
WA了第2和8 个点