#include<bits/stdc++.h>
using namespace std;
vector<int>p[5020];
queue<int>q;
int ind[5020],outd[5020],f[5020];
int main()
{
/*freopen("ans.in","r",stdin);
freopen("ans.out","w",stdout);*/
int n,m,a,b,ans;
cin>>n>>m;
while(m--)
{
cin>>a>>b;
outd[a]++;
ind[b]++;
p[a].push_back(b);
}
for(int i=1;i<=n;i++)
{
if(ind[i]==0)q.push(i),f[i]=1;
}
while(!q.empty())
{
int x=q.front();
q.pop();
for(int i=0;i<p[x].size();i++)
{
int y=p[x][i];
f[y]=(f[y]+f[x])%80112002;
ind[y]--;
if(ind[y]==0)q.push(y);
}
}
for(int i=1;i<=n;i++)
{
if(outd[i]==0)ans=(ans+f[i])%80112002;
}
cout<<ans<<endl;
return 0;
}
编译器上能过,洛谷过不了,试了了好几个编译器(包括线上线下),只有洛谷ide的结果不一样。求救。