记忆化dfs20分求调!!!
查看原帖
记忆化dfs20分求调!!!
1465009
zhaozi192楼主2024/12/18 17:25

只能过测试点一二,看测试点三的数据我的输出太大了好像?求大佬看看。

#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;
}

2024/12/18 17:25
加载中...