2027 2022. 12. 15 10:41:32 Bence Tevefarm cpp11 Elfogadva 50/50 101ms 12536 KiB
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

//ifstream cin("file.in");
//ofstream cout("file.out");

struct adat
{
    bool jo,lat;
    int teve;
    vector <int> sz;
};
queue <int> s;
vector <adat> x;
int n,i,a,db;

long long rekurzio (int pont)
{
    long long ss=0;
    if(!x[pont].sz.empty())
    {
        for(auto &e:x[pont].sz)
        {
            ss+=rekurzio(e);
        }
        if(x[pont].teve>=ss)
        {
            x[pont].jo=1;
            return x[pont].teve;
        }else{
            return ss;
        }
    }else{
        x[pont].jo=1;
        return x[pont].teve;
    }
}

void rekur (int pont)
{
    if(x[pont].jo==1)
    {
        x[pont].lat=1;
        ++db;
    }else{
        for(auto &e:x[pont].sz)
            rekur(e);
    }
}

int main()
{
    cin>>n;
    x.resize(n+1);
    for(i=1; i<=n; ++i)
    {
        cin>>x[i].teve;
    }
    for(i=2; i<=n; ++i)
    {
        cin>>a;
        x[a].sz.push_back(i);
    }

    cout<<rekurzio(1)<<'\n';
    rekur(1);
    cout<<db<<'\n';
    for(i=1; i<=n; ++i)
    {
        if(x[i].lat)
            cout<<i<<' ';
    }

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2236 KiB
3 Elfogadva 4/4 2ms 2256 KiB
4 Elfogadva 4/4 2ms 2416 KiB
5 Elfogadva 4/4 2ms 2640 KiB
6 Elfogadva 4/4 3ms 2740 KiB
7 Elfogadva 4/4 41ms 7164 KiB
8 Elfogadva 6/6 52ms 8608 KiB
9 Elfogadva 6/6 59ms 9424 KiB
10 Elfogadva 6/6 67ms 10596 KiB
11 Elfogadva 6/6 92ms 11320 KiB
12 Elfogadva 6/6 101ms 12536 KiB