#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5;
int n, t, x, a[N];
vector<int> p[N];
void dfs(int u) {
for(auto v : p[u])
dfs(v);
if(!p[u].size()) return;
int x = 2e9;
for(int v : p[u])
x = min(x, (int)(floor((a[v] - a[u]) / 2.0)));
if(u != 1)
a[u] += x;
else {
int minn = 2e9;
for(int v : p[u])
minn = min(minn, a[v]);
a[u] += minn;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> t;
while(t--) {
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) p[i].clear();
for(int i = 2; i <= n; i++) {
int u; cin >> u;
p[u].push_back(i);
}
dfs(1);
cout << a[1] << endl;
}
A
return 0;
}