9268 2024. 02. 19 16:09:48 PallanekPéter Társaság (50) cpp17 Hibás válasz 42/50 14ms 4056 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;
}

void solve(){
    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;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t = 1;

    while(t-- ) {
        solve();
    }

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 42/50
1 Elfogadva 0/0 3ms 1764 KiB
2 Elfogadva 0/0 8ms 2568 KiB
3 Elfogadva 3/3 3ms 2180 KiB
4 Elfogadva 3/3 2ms 2260 KiB
5 Elfogadva 3/3 3ms 2392 KiB
6 Elfogadva 3/3 3ms 2608 KiB
7 Elfogadva 3/3 3ms 2712 KiB
8 Elfogadva 3/3 3ms 3064 KiB
9 Elfogadva 3/3 4ms 3148 KiB
10 Elfogadva 3/3 6ms 3212 KiB
11 Elfogadva 3/3 6ms 3260 KiB
12 Elfogadva 3/3 8ms 3564 KiB
13 Elfogadva 4/4 8ms 3520 KiB
14 Elfogadva 4/4 9ms 3788 KiB
15 Hibás válasz 0/4 10ms 3868 KiB
16 Elfogadva 4/4 13ms 4056 KiB
17 Hibás válasz 0/4 14ms 4056 KiB