#include <fstream>
#include <cmath>
#include <vector>
using namespace std;
ifstream fin("input.txt");
ofstream fout("output.txt");
int N,temp,S;
vector <int> grafo[100001];
int monete[100001];
int dfs(int V) {
int M=monete[V]-1;
for(unsigned int i=0;i<grafo[V].size();i++) M+=dfs(grafo[V][i]);
S+=abs(M);
return M;
}
int main() {
fin>>N;
for(int i=1;i<=N;i++) fin>>monete[i];
for(int i=2;i<=N;i++) {
fin>>temp;
grafo[temp].push_back(i);
}
dfs(1);
fout<<S;
}
I2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppZnN0cmVhbSBmaW4oImlucHV0LnR4dCIpOwpvZnN0cmVhbSBmb3V0KCJvdXRwdXQudHh0Iik7CgppbnQgTix0ZW1wLFM7CnZlY3RvciA8aW50PiBncmFmb1sxMDAwMDFdOwppbnQgbW9uZXRlWzEwMDAwMV07CgppbnQgZGZzKGludCBWKSB7CglpbnQgTT1tb25ldGVbVl0tMTsKCWZvcih1bnNpZ25lZCBpbnQgaT0wO2k8Z3JhZm9bVl0uc2l6ZSgpO2krKykgTSs9ZGZzKGdyYWZvW1ZdW2ldKTsKCVMrPWFicyhNKTsKCXJldHVybiBNOwp9CgppbnQgbWFpbigpIHsKCWZpbj4+TjsKCWZvcihpbnQgaT0xO2k8PU47aSsrKSBmaW4+Pm1vbmV0ZVtpXTsKCWZvcihpbnQgaT0yO2k8PU47aSsrKSB7CgkJZmluPj50ZW1wOwoJCWdyYWZvW3RlbXBdLnB1c2hfYmFjayhpKTsKCX0KCQoJZGZzKDEpOwoJZm91dDw8UzsKfQ==