Submission #1176197

#TimeUsernameProblemLanguageResultExecution timeMemory
1176197vjudge2Magic Tree (CEOI19_magictree)C++20
3 / 100
91 ms35652 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1e5 + 5;
int n, m, k, p[N];
vector<int> adj[N];
pair<int, int> hang[N];
map<int, int> mp[N];

void dfs(int u) {
    int mx = mp[u].size(), id = u;
    for (int v : adj[u]) {
        dfs(v);
        if (mp[v].size() > mx) mx = mp[v].size(), id = v;
        // for (int i = 0; i <= k; i++) dp[u][i] += dp[v][i];
    }
    if (u != id) mp[u].swap(mp[id]);
    for (int v : adj[u]) {
        for (auto [key, value] : mp[v]) mp[u][key] += value;
    }
    int cur = hang[u].second;
    while (!mp[u].empty() && cur) {
        auto it = mp[u].upper_bound(hang[u].first);
        if (it == mp[u].end()) break;
        int tak = min(it->second, cur);
        if (it->second != tak) {
            mp[u][it->first] -= tak;
            break;
        }
        else mp[u].erase(it->second);
        cur -= tak;
    }
    mp[u][hang[u].first] += hang[u].second;
    // for (int i = 1; i <= k; i++) dp[u][i] = max(dp[u][i], dp[u][i-1]);
}

int32_t main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> m >> k;
    for (int i = 2; i <= n; i++) {
        cin >> p[i];
        adj[p[i]].push_back(i);
    }
    for (int i = 1; i <= m; i++) {
        int v, d, w;
        cin >> v >> d >> w;
        hang[v] = {d, w};
    }
    dfs(1);
    int fr = 0;
    for (auto v : mp[1]) fr += v.second;
    cout << fr << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...