251552026-02-18 09:44:06szabelrTársaság (50)cpp17Wrong answer 7/5014ms820 KiB
#include <iostream>
#include <vector>
using namespace std;
long long dfs(int v, int parent,
         vector<vector<pair<int, int>>>& adj,
         int &count,long long x,
         vector<int> &ertekek)
{
    ertekek[v]=0;
    long long maxi=0;
    for(auto to:adj[v])
    {
        if(to.first!=parent and ertekek[v]!=-1)
        {
            maxi=max(maxi,dfs(to.first,v,adj,count,x,ertekek)+to.second);
        }
    }
    if(maxi>x)
    {
        ertekek[v]=-1;
        count++;
    }
    return maxi;

}
bool joe(long long x,
         vector<vector<pair<int, int>>>& adj,
         int n,int k)
{
    int count=0;
    vector<int> ertekek(n+1);
    dfs(1,-1,adj,count,x,ertekek);
    if(count<=k)
        return true;
    else
        return false;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,k;
    cin >> n>>k;
    vector<vector<pair<int, int>>> adj(n + 1);
    for (int i = 2; i <= n; i++)
    {
        int a, b;
        cin >> a >> b;
        adj[a].push_back({ i,b });
    }
    long long cmin = 0;
    long long cmax = 1000000000000000;
    long long res=-1;
    while (cmin <= cmax)
    {
        long long mid = (cmin + cmax) / 2;
        if (joe(mid, adj,n,k))
        {
            res=mid;
            cmax = mid - 1;
        }
        else
            cmin = mid + 1;
    }
    cout<<res;
}
SubtaskSumTestVerdictTimeMemory
base7/50
1Accepted0/01ms316 KiB
2Wrong answer0/07ms564 KiB
3Wrong answer0/31ms316 KiB
4Wrong answer0/31ms316 KiB
5Accepted3/31ms376 KiB
6Wrong answer0/31ms344 KiB
7Wrong answer0/32ms316 KiB
8Wrong answer0/32ms316 KiB
9Wrong answer0/33ms508 KiB
10Wrong answer0/34ms516 KiB
11Wrong answer0/34ms604 KiB
12Wrong answer0/37ms564 KiB
13Wrong answer0/48ms564 KiB
14Wrong answer0/49ms616 KiB
15Wrong answer0/410ms676 KiB
16Accepted4/413ms820 KiB
17Wrong answer0/414ms820 KiB