194212025-12-08 21:29:38KristófTevefarmcpp17Hibás válasz 0/50111ms10272 KiB

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
vector<int> w;
vector<vector<int>> graph;
vector<int> ans;
vector<vector<int>> pans;
int solve(int s)
{
if(graph[s].size()==0)
    {
    pans[s].push_back(s);
    return w[s];
    }
int sum=0;
for(auto x : graph[s])
    {
    sum+=solve(x);
    //cout<<x<<" "<<sum<<endl;
    }
if(w[s]>sum)
    {
    pans[s].push_back(s);
    return w[s];
    }
else
    {
    pans[s]=pans[graph[s][0]];
    for(int i=1;i<graph[s].size();i++)
        {
        for(auto x:pans[graph[s][i]])
        pans[s].push_back(x);
        }
    return sum;
    }
}

int main()
{
    int n;
    cin>>n;
    w.resize(n+1);
    for(int i=1;i<=n;i++)cin>>w[i];
    cout<<w[8]<<endl;
    graph.resize(n+1);
    pans.resize(n+1);
    int x;
    for(int i=2;i<=n;i++)
        {
        cin>>x;
        graph[x].push_back(i);
        }
    cout<<solve(1)<<endl;
    cout<<pans[1].size()<<endl;
    sort(pans[1].begin(),pans[1].end());
    for(auto x:pans[1])
        {
        cout<<x<<" ";
        }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms508 KiB
2Hibás válasz0/02ms316 KiB
3Hibás válasz0/41ms500 KiB
4Hibás válasz0/41ms316 KiB
5Hibás válasz0/41ms388 KiB
6Hibás válasz0/42ms316 KiB
7Hibás válasz0/456ms6504 KiB
8Hibás válasz0/668ms7952 KiB
9Hibás válasz0/675ms8880 KiB
10Hibás válasz0/689ms10204 KiB
11Hibás válasz0/6101ms9268 KiB
12Hibás válasz0/6111ms10272 KiB