232602026-01-16 21:44:09MrkzTársaság (50)cpp17Hibás válasz 38/5014ms944 KiB
#include <bits/stdc++.h>

using namespace std;
long long bejaras(int i, int szulo, vector<vector<pair<int, long long>>> &graf, long long max_varakozas, int &kotelezo)
{
    long long max_ut = 0;
    for (auto [szomszed, suly] : graf[i])
    {
        if (szomszed == szulo)
            continue;
        long long ut = bejaras(szomszed, i, graf, max_varakozas, kotelezo) + suly;
        if (ut > max_varakozas)
        {
            kotelezo++;
        }
        else
        {
            max_ut = max(max_ut, ut);
        }
    }
    return max_ut;
}
int main()
{
    int N;
    int K;
    cin >> N >> K;
    vector<vector<pair<int, long long>>> graf(N);
    for (int i = 0; i < N - 1; i++)
    {
        int szulo;
        long long ido;
        cin >> szulo >> ido;
        int gyerek = i + 2;
        graf[szulo - 1].push_back({gyerek - 1, ido});
    }

    long long bal = 0, jobb = 1e9;
    while (bal < jobb)
    {
        long long kozepso = (bal + jobb) / 2;
        int kotelezo = 0;
        bejaras(0, -1, graf, kozepso, kotelezo);
        if (kotelezo <= K)
            jobb = kozepso;
        else
            bal = kozepso + 1;
    }
    cout << bal << "\n";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/50
1Elfogadva0/01ms512 KiB
2Elfogadva0/08ms564 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/32ms528 KiB
9Elfogadva3/33ms316 KiB
10Elfogadva3/34ms316 KiB
11Elfogadva3/34ms564 KiB
12Elfogadva3/38ms636 KiB
13Elfogadva4/48ms572 KiB
14Hibás válasz0/49ms564 KiB
15Hibás válasz0/412ms800 KiB
16Elfogadva4/414ms848 KiB
17Hibás válasz0/414ms944 KiB