#include <bits/stdc++.h>
using namespace std;
#define ll long long int
const int M = 1e9 + 7;
int dfs(int node, vector<int> adj[], int color, vector<int> &colors, vector<int> &vis)
{
if (colors[node - 1] != color)
return 0;
int sum = 1;
vis[node] = 1;
for (auto it : adj[node])
{
sum += dfs(it, adj, color, colors, vis);
}
return sum;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
vector<int> tree_from(n - 1);
vector<int> tree_to(n - 1);
vector<int> colors(n);
for (int i = 0; i < n - 1; i++)
cin >> tree_from[i];
for (int i = 0; i < n - 1; i++)
cin >> tree_to[i];
for (int i = 0; i < n; i++)
cin >> colors[i];
vector<int> adj[n + 1];
for (int i = 0; i < n - 1; i++)
{
adj[tree_from[i]].push_back(tree_to[i]);
}
vector<int> vis(n + 1, 0);
ll ans = 0;
for (int i = 1; i <= n; i++)
{
if (vis[i] == 0)
{
int val = dfs(i, adj, colors[i - 1], colors, vis);
ans += max(0ll, ((val - 2) * 1ll * (val - 1)) / 2);
}
}
cout << ans << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludApjb25zdCBpbnQgTSA9IDFlOSArIDc7CgppbnQgZGZzKGludCBub2RlLCB2ZWN0b3I8aW50PiBhZGpbXSwgaW50IGNvbG9yLCB2ZWN0b3I8aW50PiAmY29sb3JzLCB2ZWN0b3I8aW50PiAmdmlzKQp7CiAgaWYgKGNvbG9yc1tub2RlIC0gMV0gIT0gY29sb3IpCiAgICByZXR1cm4gMDsKICBpbnQgc3VtID0gMTsKICB2aXNbbm9kZV0gPSAxOwogIGZvciAoYXV0byBpdCA6IGFkaltub2RlXSkKICB7CiAgICBzdW0gKz0gZGZzKGl0LCBhZGosIGNvbG9yLCBjb2xvcnMsIHZpcyk7CiAgfQogIHJldHVybiBzdW07Cn0KCmludCBtYWluKCkKewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogIGNpbi50aWUoTlVMTCk7CiAgaW50IG47CiAgY2luID4+IG47CiAgdmVjdG9yPGludD4gdHJlZV9mcm9tKG4gLSAxKTsKICB2ZWN0b3I8aW50PiB0cmVlX3RvKG4gLSAxKTsKICB2ZWN0b3I8aW50PiBjb2xvcnMobik7CgogIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykKICAgIGNpbiA+PiB0cmVlX2Zyb21baV07CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKQogICAgY2luID4+IHRyZWVfdG9baV07CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICBjaW4gPj4gY29sb3JzW2ldOwogIHZlY3RvcjxpbnQ+IGFkaltuICsgMV07CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKQogIHsKICAgIGFkalt0cmVlX2Zyb21baV1dLnB1c2hfYmFjayh0cmVlX3RvW2ldKTsKICB9CiAgdmVjdG9yPGludD4gdmlzKG4gKyAxLCAwKTsKICBsbCBhbnMgPSAwOwogIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICB7CiAgICBpZiAodmlzW2ldID09IDApCiAgICB7CiAgICAgIGludCB2YWwgPSBkZnMoaSwgYWRqLCBjb2xvcnNbaSAtIDFdLCBjb2xvcnMsIHZpcyk7CiAgICAgIGFucyArPSBtYXgoMGxsLCAoKHZhbCAtIDIpICogMWxsICogKHZhbCAtIDEpKSAvIDIpOwogICAgfQogIH0KCiAgY291dCA8PCBhbnMgPDwgZW5kbDsKCiAgcmV0dXJuIDA7Cn0=