题目给出的n<=5000,我给结构体数组分了5005,按理来说不应该出现越界的情况才对,我把数组开到50005后,原本RE的第五个测试点正常通过了,最后虽然把数组开到足够大后全部通过了测试点,但是有谁知道为什么一开始会RE吗
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
vector<int>outdeg;
struct Node {
vector<int>vct, p;
int deg, sum, idx;
}node[5005];
int main() {
cin >> n >> m;
for (int i = 1; i <= m; ++i) {
int u, v;
cin >> u >> v;
node[v].p.push_back(u);
node[u].vct.push_back(v);
++node[v].deg;
node[i].idx = 1;
}
queue<int>que;
for (int i = 1; i <= n; ++i) {
if (!node[i].deg) {
que.push(i);
node[i].sum = 1;
}
if (!node[i].vct.size()) outdeg.push_back(i);
}
while (!que.empty()) {
int c = que.front();
que.pop();
for (int i = 0; i < node[c].vct.size(); ++i) {
int idx = node[c].vct[i];
--node[idx].deg;
if (!node[idx].deg) que.push(idx);
}
for (int i = 0; i < node[c].p.size(); ++i) {
int idx = node[c].p[i];
node[c].sum = (node[c].sum+node[idx].sum)%80112002;
}
}
for (int i = 0; i < outdeg.size(); ++i) {
int c = outdeg[i];
ans = (ans+node[c].sum)%80112002;
}
cout << ans;
return 0;
}