#include <bits/stdc++.h>
using namespace std;
vector<long long> ertek;
vector<long long> apa;
vector<vector<long long> > gyerekek;
long long kereses(long long x) {
if (gyerekek[x].size()>0) {
long long epp=ertek[x];
long long masik=0;
for (long long sz : gyerekek[x]) {
masik+=kereses(sz);
}
return max(epp, masik);
}
else {
return ertek[x];
}
}
int main() {
long long n;
cin >> n;
ertek.resize(n);
for (long long i=0; i<n; i++) {
cin >> ertek[i];
}
apa.resize(n);
apa[0]=0;
gyerekek.assign(n, vector<long long>());
for (long long i=1; i<n; i++) {
cin >> apa[i];
apa[i]--;
gyerekek[apa[i]].push_back(i);
}
cout << kereses(0);
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 25/50 | ||||||
1 | Hibás válasz | 0/0 | 3ms | 1812 KiB | |||
2 | Hibás válasz | 0/0 | 3ms | 2240 KiB | |||
3 | Részben helyes | 2/4 | 3ms | 2268 KiB | |||
4 | Részben helyes | 2/4 | 3ms | 2516 KiB | |||
5 | Részben helyes | 2/4 | 3ms | 2800 KiB | |||
6 | Részben helyes | 2/4 | 3ms | 3052 KiB | |||
7 | Részben helyes | 2/4 | 39ms | 8460 KiB | |||
8 | Részben helyes | 3/6 | 46ms | 9628 KiB | |||
9 | Részben helyes | 3/6 | 54ms | 10668 KiB | |||
10 | Részben helyes | 3/6 | 64ms | 12096 KiB | |||
11 | Részben helyes | 3/6 | 87ms | 13140 KiB | |||
12 | Részben helyes | 3/6 | 96ms | 14444 KiB |