4552 2023. 03. 29 14:53:47 Ablablabla Tevefarm cpp17 Elfogadva 50/50 104ms 12760 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int n;
vector<int> teve;
vector<vector<int>> graf;
vector<bool> jelolt;
vector<int> kivalasztott;

ll vizsgal(int helyzet){
    ll osszeg = 0;
    for(int kov : graf[helyzet]){
        osszeg += vizsgal(kov);
    }

    if(osszeg < teve[helyzet]){
        jelolt[helyzet] = true;
        osszeg = teve[helyzet];
    }

    return osszeg;
}

void dfs(int akt){
    if(jelolt[akt]){
        kivalasztott.push_back(akt);
        return;
    }
    for(int kov : graf[akt]){
        dfs(kov);
    }
}

int main()
{
    cin >> n;
    teve.assign(n, 0);
    graf.assign(n, vector<int>(0, 0));
    jelolt.assign(n, false);

    for(int i = 0; i < n; i++){
        cin >> teve[i];
    }

    for(int i = 0; i < n - 1; i++){
        int a;
        cin >> a;
        graf[a - 1].push_back(i + 1);
    }
/*
    for(int i = 0; i < n; i++){
        cout << i << ": ";
        for(int x : graf[i]){
            cout << x << " ";
        }

        cout << "\n";
    }
*/
    ll valasz = vizsgal(0);
    cout << valasz << "\n";
    dfs(0);
    cout << kivalasztott.size() << "\n";
    sort(kivalasztott.begin(), kivalasztott.end());
    for(int x : kivalasztott){
        cout << x+1 << " ";
    }
    cout << "\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1816 KiB
2 Elfogadva 0/0 3ms 2180 KiB
3 Elfogadva 4/4 3ms 2212 KiB
4 Elfogadva 4/4 3ms 2468 KiB
5 Elfogadva 4/4 3ms 2968 KiB
6 Elfogadva 4/4 3ms 3100 KiB
7 Elfogadva 4/4 43ms 7696 KiB
8 Elfogadva 6/6 54ms 8800 KiB
9 Elfogadva 6/6 61ms 9968 KiB
10 Elfogadva 6/6 71ms 10896 KiB
11 Elfogadva 6/6 96ms 11688 KiB
12 Elfogadva 6/6 104ms 12760 KiB