92672024-02-19 16:01:16PallanekPéterTársaság (50)cpp17Hibás válasz 42/5013ms4452 KiB
#include <bits/stdc++.h>
using namespace std;

int db = 0;
long long mid = 0;

vector<vector<pair<int,int>>> graf;


int bejaras(int u) {
    int mx=0;
    for(pair<int,int> v:graf[u]){
        int ossz = bejaras(v.first)+v.second;
        if(ossz > mid) {
            ossz = 0;
            db++;
        }
        mx=max(mx, ossz);
    }
    return mx;
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int n, k;
    cin >> n >> k;
    graf.resize(n+1);

    for(int i=2;i<=n;i++){
        long long u, v;
        cin >> u >> v;
        graf[u].push_back({i, v});
    }

    long long l = 0, r = 1e13;
    while(l<r){
        mid=(l+r)/2;
        bejaras(1);
        if(db<=k){
            r = mid;
        } else{
            if(l + 1 == r) break;
            l = mid;
        }
        db = 0;
    }
    cout << r << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base42/50
1Elfogadva0/03ms1896 KiB
2Elfogadva0/08ms2548 KiB
3Elfogadva3/33ms2292 KiB
4Elfogadva3/33ms2508 KiB
5Elfogadva3/33ms2740 KiB
6Elfogadva3/33ms2928 KiB
7Elfogadva3/33ms2828 KiB
8Elfogadva3/33ms2972 KiB
9Elfogadva3/34ms3240 KiB
10Elfogadva3/36ms3500 KiB
11Elfogadva3/36ms3636 KiB
12Elfogadva3/38ms3680 KiB
13Elfogadva4/48ms3816 KiB
14Elfogadva4/48ms3920 KiB
15Hibás válasz0/410ms3932 KiB
16Elfogadva4/413ms4376 KiB
17Hibás válasz0/413ms4452 KiB