149272025-02-07 21:08:14szjTársaság (50)cpp17Elfogadva 50/5017ms816 KiB
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
struct fa
{
    int p, l;
};
vector<vector<fa>> vec;
ll koz = 0;
int num = 0;
long long int req(int s)
{
    ll ma = 0, ert = 0;
    for(int i=0; i<vec[s].size(); i++)
    {
        ert = req(vec[s][i].p)+vec[s][i].l;
        if(ert > koz)
        {
            ert = 0;
            num++;
        }
        ma = max(ma, ert);
    }
    return ma;
}
int main()
{
    int n, m, i, el = 0, c, j;
    fa csucs;
    cin >> n >> m;
    vec.resize(n+1);
    for(i=1; i<n; i++)
    {
        cin >> c >> csucs.l;
        csucs.p = i+1;
        vec[c].push_back(csucs);
    }
    ll al = 0, fel = 1e13;
    while(al < fel)
    {
        koz = (al+fel)/2;
        req(1);
        if(num<=m)fel = koz;
        else
        {
            al = koz;
            if(al+1==fel)break;
        }
        num = 0;
    }
    cout << fel;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/08ms576 KiB
3Elfogadva3/31ms508 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms328 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/32ms316 KiB
9Elfogadva3/33ms316 KiB
10Elfogadva3/34ms496 KiB
11Elfogadva3/36ms564 KiB
12Elfogadva3/39ms576 KiB
13Elfogadva4/410ms640 KiB
14Elfogadva4/412ms664 KiB
15Elfogadva4/413ms732 KiB
16Elfogadva4/416ms752 KiB
17Elfogadva4/417ms816 KiB