#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 |