#include<iostream>
#include<queue>
#define N 80112002
using namespace std;
int map[5005][5005],f[5005],chu[5005],ru[5005];
int n,m,sum;
queue<int> q;
int main(){
int a,b;
cin>>n>>m;
for(int i = 1;i <= m;i++){
cin>>a>>b;
map[a][b] = 1;
chu[a]++;
ru[b]++;
}
for(int j = 1;j <= m;j++){
if(ru[j] == 0){
f[j] = 1;
q.push(j);
}
}
while(!q.empty()){
int a = q.front();
q.pop();
for(int i = 1;i <= m;i++){
if(map[a][i] == 0)
continue;
f[i] += f[a];
f[i] %= N;
ru[i]--;
if(ru[i] == 0){
if(chu[i] == 0){
sum += f[i];
sum %= N;
continue;
}
else
q.push(i);
}
}
}
cout<<sum<<endl;
return 0;
}
这是我看过题解大佬的思路后 写的代码但是测评的时候出现:
后六个测试点出现 RE 想知道为什么?