#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5,MOD=80112002;
vector<int> a[MAXN];
int b[MAXN],c[MAXN],dp[MAXN];
int n,m,ans;
void kahn(){
int cnt=0;
priority_queue<int,vector<int>,greater<int>> pq;
queue<int> q;
for(int i=1;i<=n;i++){
if(!b[i]){
pq.push(i);
dp[i]=1;
}
}
while(!pq.empty()){
int tmp=pq.top();
pq.pop();
q.push(tmp);
for(auto i:a[tmp]){
b[i]--;
if(b[i]==0) pq.push(i);
}
cnt++;
}
for(int i=1;i<=n;i++){
for(auto j:a[i]){
dp[j]=(dp[i]+dp[j])%MOD;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int j,k;
cin>>j>>k;
a[j].push_back(k);
b[k]++;
c[j]++;
}
kahn();
for(int i=1;i<=n;i++){
if(c[i]==0) ans=(ans+dp[i])%MOD;
}
cout<<ans;
return 0;
}
样例已过。