194222025-12-08 21:30:40KristófTevefarmcpp17Hibás válasz 38/50115ms10272 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
base38/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva4/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/42ms316 KiB
7Elfogadva4/452ms6496 KiB
8Elfogadva6/667ms7968 KiB
9Elfogadva6/676ms8880 KiB
10Elfogadva6/696ms10204 KiB
11Hibás válasz0/697ms9216 KiB
12Hibás válasz0/6115ms10272 KiB