这个代码用的是拓扑排序,每次加都MOD了一遍,应该不会有超限的问题
我下载了第五题的数据并且用freopen载入试了几次
发现输出的答案都不固定,于是我又检查了一遍局部变量的初值,也没找到未定义的局部变量
这篇代码写了两三遍了还是RE40,真的找不到bug了,希望大神可以指导一下qwq
#include<bits/stdc++.h>
#define MOD 80112002
using namespace std;
int n,m,low,up;
int in[6001],out[6001];
vector<int> a[6001];
int f[6001];
queue<int> q;
int main(){
freopen("P4017_5.in","r",stdin);
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>low>>up;
a[low].push_back(up);
out[low]++;
in[up]++;
}
for(int i=1;i<=n;i++){
if(in[i]==0){
q.push(i);
f[i]=1;
}
}
//将入度为零的点加入队列
while(!q.empty()){
int head=q.front();
q.pop();
//接下来对head拓展
for(int i=0;i<a[head].size();i++){
int y=a[head][i];
in[y]--;
f[y]=(f[head]+f[y])%MOD;
if(in[y]==0) q.push(y);
}
}
int ans=0;
for(int i=1;i<=m;i++){
if(out[i]==0) ans=(ans+f[i])%MOD;
}
cout<<ans;
return 0;
}