92582024-02-19 12:27:34AblablablaTársaság (50)cpp17Elfogadva 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";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/010ms2564 KiB
3Elfogadva3/33ms2328 KiB
4Elfogadva3/33ms2540 KiB
5Elfogadva3/33ms2576 KiB
6Elfogadva3/33ms2808 KiB
7Elfogadva3/33ms3044 KiB
8Elfogadva3/34ms3160 KiB
9Elfogadva3/34ms3472 KiB
10Elfogadva3/37ms3624 KiB
11Elfogadva3/38ms4036 KiB
12Elfogadva3/310ms4368 KiB
13Elfogadva4/413ms4620 KiB
14Elfogadva4/414ms4748 KiB
15Elfogadva4/414ms5248 KiB
16Elfogadva4/417ms5480 KiB
17Elfogadva4/418ms5700 KiB