求助为啥会 MLE
查看原帖
求助为啥会 MLE
693428
unDefined_Future楼主2023/10/7 13:58

如题。代码如下:

#include <iostream>
#include <cstdio>
using namespace std;

int n;
const int N = 7010;
int g[N][N];
int a[N];
int dp[N][5];
int in[N];

void dfs(int now) {
    dp[now][1] = a[now];
    for (int i = 1; i <= n; i++) {
        if(g[now][i]) {
            dfs(i);
            dp[now][0] += max(dp[i][0], dp[i][1]);
            dp[now][1] += dp[i][0];
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    
    for (int i = 1; i < n; i++) {
        int l, k; cin >> l >> k;
        g[k][l] = 1;
        in[l]++;
    }
     
    for (int i = 1; i <= n; i++) 
    if(in[i] == 0) {
        dfs(i);
        cout << max(dp[i][0], dp[i][1]);
        return 0;
    }
    return 0;
}

虽然有好多这样的贴子,但是我既没用 vector,也没开小数组啊?

2023/10/7 13:58
加载中...