246 2021. 03. 05 15:58:34 balinttt Tevefarm cpp14 Elfogadva 50/50 104ms 13140 KiB
#include<bits/stdc++.h>

using namespace std;

class pont{
public:
    vector<int> hova;
    long long mx;
    bool finish = 1;
    int index = 0;
    long long dfs();
    void dfs2();
};

int n;

vector<pont> p;

long long pont::dfs(){
    long long mx2 = 0;
    for(int i:hova){
        mx2+=p[i].dfs();
    }
    if(mx2 >= mx){
        mx = mx2;
        finish = 0;
    }
    return mx;
}

stack<int> er;

void pont::dfs2(){
    if(finish){
        er.push(index);
    } else {
        for(int i : hova){
            p[i].dfs2();
        }
    }
}

int main(){
    cin >> n;
    p.resize(n);
    for(int i=0;i<n;i++){
        cin >> p[i].mx;
        p[i].index = i;
    }
    int a;
    for(int i=1;i<n;i++){
        cin >> a;
        --a;
        p[a].hova.push_back(i);
    }
    cout << p[0].dfs() << '\n';
    p[0].dfs2();
    cout << er.size() << '\n';
    while(er.size()){
        cout << er.top()+1 << ' ';
        er.pop();
    }
return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 2ms 1740 KiB
2 Elfogadva 0/0 2ms 1824 KiB
3 Elfogadva 4/4 2ms 1824 KiB
4 Elfogadva 4/4 2ms 1828 KiB
5 Elfogadva 4/4 2ms 1848 KiB
6 Elfogadva 4/4 3ms 1880 KiB
7 Elfogadva 4/4 43ms 7360 KiB
8 Elfogadva 6/6 52ms 8396 KiB
9 Elfogadva 6/6 64ms 9568 KiB
10 Elfogadva 6/6 72ms 11000 KiB
11 Elfogadva 6/6 93ms 12036 KiB
12 Elfogadva 6/6 104ms 13140 KiB