240682026-02-04 06:57:01szjTevefarmcpp17Elfogadva 50/5054ms8396 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll n, i, a;
    cin >> n;
    ll ae[n], ke[n]={}, apa[n], nr[n]={};
    vector<vector<int>> vec(n);
    for(i=0; i<n; i++)cin >> ae[i];
    apa[0]=-1;
    for(i=1; i<n; i++)
    {
        cin >> apa[i];
        apa[i]--;
        vec[apa[i]].push_back(i);
        nr[apa[i]]++;
    }
    queue<int>q;
    for(i=0; i<n; i++)
    {
        if(nr[i]==0)
        {
            q.push(i);
            ke[i]=ae[i];
        }
    }
    while(!q.empty())
    {
        a=q.front();
        q.pop();
        nr[apa[a]]--;
        ke[a]=max(ke[a], ae[a]);
        ke[apa[a]]+=ke[a];
        if(nr[apa[a]]==0 && apa[a]!=-1)q.push(apa[a]);
    }
    cout << ke[0] << endl;
    vector<ll> veg;
    q.push(0);
    while(!q.empty())
    {
        a=q.front();
        q.pop();
        if(ae[a]<ke[a])for(auto i:vec[a])q.push(i);
        else veg.push_back(a);
    }
    cout << veg.size() << endl;
    for(auto i:veg)cout << i+1 << " ";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva4/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms336 KiB
6Elfogadva4/41ms316 KiB
7Elfogadva4/423ms4392 KiB
8Elfogadva6/628ms5200 KiB
9Elfogadva6/632ms6128 KiB
10Elfogadva6/635ms6632 KiB
11Elfogadva6/648ms7664 KiB
12Elfogadva6/654ms8396 KiB