92582024-02-19 12:27:34AblablablaTársaság (50)cpp17Accepted 50/5018ms5700 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

typedef pair<ll, ll> pii;

vector<vector<pii>> csucsok;

pii szamol(ll akt, ll maxTav){
    pii vissza = {0, 0};

    for(pii x : csucsok[akt]){
        pii a = szamol(x.first, maxTav);

        vissza.second += a.second;

        if(a.first + x.second > maxTav){
            vissza.second++;
        } else{
            vissza.first = max(vissza.first, a.first + x.second);
        }
    }

    return vissza;
}

int main(){
    ll n, k;
    cin >> n >> k;

    csucsok.assign(n, vector<pii>());
    for(ll i = 1; i < n; i++){
        ll a, t;
        cin >> a >> t;
        a--;

        csucsok[a].push_back({i, t});
    }

    ll l = 0, r = 1e13;
    ll valasz = 0;
    while(l <= r){
        ll mid = (l + r) / 2;

        ll akt = szamol(0, mid).second;

        if(akt <= k){
            valasz = mid;
            r = mid - 1;
        } else{
            l = mid + 1;
        }
    }

    cout << valasz << "\n";
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1808 KiB
2Accepted0/010ms2564 KiB
3Accepted3/33ms2328 KiB
4Accepted3/33ms2540 KiB
5Accepted3/33ms2576 KiB
6Accepted3/33ms2808 KiB
7Accepted3/33ms3044 KiB
8Accepted3/34ms3160 KiB
9Accepted3/34ms3472 KiB
10Accepted3/37ms3624 KiB
11Accepted3/38ms4036 KiB
12Accepted3/310ms4368 KiB
13Accepted4/413ms4620 KiB
14Accepted4/414ms4748 KiB
15Accepted4/414ms5248 KiB
16Accepted4/417ms5480 KiB
17Accepted4/418ms5700 KiB