253342026-02-19 11:15:30KevinRaktárba szállítás (45 pont)cpp17Hibás válasz 9/459ms2524 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

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

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

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

    for (int i = 1; i <= N; i++) {
        cin >> parent[i] >> A[i];
    }

    vector<vector<int>> children(N + 1);
    for (int i = 2; i <= N; i++) {
        children[parent[i]].push_back(i);
    }

    // Path sum számítás
    vector<ll> path_sum(N + 1, 0);

    function<void(int)> dfs = [&](int u) {
        for (int v : children[u]) {
            path_sum[v] = path_sum[u] + A[v];
            dfs(v);
        }
    };

    path_sum[1] = 0;
    dfs(1);

    // levelek gyűjtése
    priority_queue<ll> pq;

    for (int i = 2; i <= N; i++) {
        if (children[i].empty()) {
            pq.push(path_sum[i]);
        }
    }

    ll result = 0;

    for (int i = 0; i < K && !pq.empty(); i++) {
        ll val = pq.top();
        pq.pop();
        result += min(val, C);
    }

    cout << result << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base9/45
1Elfogadva0/01ms316 KiB
2Hibás válasz0/04ms1076 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Elfogadva1/11ms316 KiB
8Elfogadva1/12ms500 KiB
9Elfogadva1/14ms1060 KiB
10Elfogadva1/14ms1076 KiB
11Elfogadva1/14ms1076 KiB
12Hibás válasz0/11ms316 KiB
13Hibás válasz0/11ms316 KiB
14Hibás válasz0/11ms316 KiB
15Hibás válasz0/11ms316 KiB
16Hibás válasz0/11ms316 KiB
17Hibás válasz0/11ms560 KiB
18Hibás válasz0/11ms540 KiB
19Hibás válasz0/11ms316 KiB
20Hibás válasz0/11ms316 KiB
21Hibás válasz0/26ms1076 KiB
22Hibás válasz0/26ms1076 KiB
23Hibás válasz0/24ms1076 KiB
24Hibás válasz0/38ms1636 KiB
25Hibás válasz0/39ms1588 KiB
26Hibás válasz0/34ms1332 KiB
27Hibás válasz0/34ms1332 KiB
28Hibás válasz0/38ms2464 KiB
29Hibás válasz0/38ms2524 KiB
30Hibás válasz0/37ms2360 KiB