253362026-02-19 11:25:00KevinRaktárba szállítás (45 pont)cpp17Hibás válasz 3/459ms2404 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N, K, C;
    cin >> N >> K >> C;

    vector<ll> parent(N + 1);
    vector<ll> A(N + 1);
    vector<vector<int>> children(N + 1);

    for (int i = 1; i <= N; i++) {
        cin >> parent[i] >> A[i];
        if (i != 1) {
            children[parent[i]].push_back(i);
        }
    }

    // Részfa összegek számítása DFS-sel
    vector<ll> subtree(N + 1, 0);

    // Iteratív DFS (nehogy stack overflow legyen 20000-nél)
    vector<int> order;
    stack<int> st;
    st.push(1);

    while (!st.empty()) {
        int v = st.top();
        st.pop();
        order.push_back(v);
        for (int c : children[v]) {
            st.push(c);
        }
    }

    // Postorder feldolgozás
    reverse(order.begin(), order.end());

    for (int v : order) {
        subtree[v] = A[v];
        for (int c : children[v]) {
            subtree[v] += subtree[c];
        }
    }

    // Minden városra számoljuk mennyit lehet vinni
    vector<ll> values;
    for (int i = 2; i <= N; i++) { // 1-esből nem indulunk
        values.push_back(min(subtree[i], C));
    }

    sort(values.rbegin(), values.rend());

    ll result = 0;
    for (int i = 0; i < K && i < (int)values.size(); i++) {
        result += values[i];
    }

    cout << result << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base3/45
1Hibás válasz0/01ms508 KiB
2Hibás válasz0/04ms1096 KiB
3Hibás válasz0/11ms316 KiB
4Hibás válasz0/11ms316 KiB
5Hibás válasz0/11ms356 KiB
6Hibás válasz0/11ms324 KiB
7Hibás válasz0/11ms316 KiB
8Hibás válasz0/11ms316 KiB
9Elfogadva1/16ms1312 KiB
10Elfogadva1/16ms1076 KiB
11Elfogadva1/14ms1076 KiB
12Hibás válasz0/11ms316 KiB
13Hibás válasz0/11ms316 KiB
14Hibás válasz0/12ms316 KiB
15Hibás válasz0/12ms316 KiB
16Hibás válasz0/12ms316 KiB
17Hibás válasz0/12ms332 KiB
18Hibás válasz0/12ms316 KiB
19Hibás válasz0/12ms316 KiB
20Hibás válasz0/11ms500 KiB
21Hibás válasz0/26ms1332 KiB
22Hibás válasz0/24ms1180 KiB
23Hibás válasz0/26ms1272 KiB
24Hibás válasz0/39ms2404 KiB
25Hibás válasz0/39ms2100 KiB
26Hibás válasz0/34ms1332 KiB
27Hibás válasz0/34ms1332 KiB
28Hibás válasz0/38ms2144 KiB
29Hibás válasz0/38ms2100 KiB
30Hibás válasz0/38ms2240 KiB