只能过测试点一二,看测试点三的数据我的输出太大了好像?求大佬看看。
#include<iostream>
#include<sstream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
#define MAX 100005
long long a[MAX], n, m, ans;
bool b[MAX];
vector<long long> g[MAX];
int dfs(long long x) {
if (!g[x].size()) a[x]=1;
if (a[x]) return a[x];
for (long long i = 0; i < g[x].size(); i++) {
a[x] += dfs(g[x][i]) ;
}
return a[x];
}
int main() {
cin >> n >> m;
long long e, be;
for (long long i = m; i; i--) {
cin >> be >> e;
g[e].push_back(be);
b[be] = true;
}
for (long long i = 1; i <= n; i++) {
dfs(i);
}
for (long long i = 1; i <= n; i++) {
if (!b[i]) {
ans += a[i];
ans %= 80112002;
}
}
cout << ans%80112002;
return 0;
}