// I can't tell you what it really is,
// I can only tell you what it feels like.
#include "bits/stdc++.h"
using namespace std;
#define int long long
#define rep(i,a,n) for (int i = a; i <= n; ++i)
#define pb push_back
#define P pair < int, int >
#define s second
#define f first
#define all(v) v.begin(), v.end()
#define lb(v, x) lower_bound(all(v), x) - v.begin()
#define up(v, x) upper_bound(all(v), x) - v.begin()
const int mod = 1e9 + 7;
const int N = 2e5 + 5;
vector < int > v[N];
int val[N], idx[N], ar[N], ok = 1;
int sz[N];
void dfs(int x, int p) {
ar[ok] = x;
idx[x] = ok++;
sz[x] = 1;
for (int i : v[x]) {
if (i != p) {
dfs(i, x);
sz[x] += sz[i];
}
}
}
int a[N];
vector < int > tree[N << 2], sum[N<<2];
class merge_sort_tree{
public:
void build(int l, int r, int node){
if(l == r){
tree[node].pb(a[l]);
return ;
}
int mid = l + r >> 1, lc = node + node, rc = 1 + lc;
build(l, mid, lc); build(mid + 1, r, rc);
merge(all(tree[lc]), all(tree[rc]), back_inserter(tree[node]));
}
void done() {
int kit = N<<2;
for (int i = 0; i < kit; ++i) {
sum[i].resize(tree[i].size());
if (!tree[i].empty())
sum[i][0] = tree[i][0];
for (int j = 1; j < tree[i].size(); ++j) {
sum[i][j] = sum[i][j-1] + tree[i][j];
}
}
}
int query(int l, int r, int ql, int qr, int val, int node){
if(qr < l || r < ql)
return 0;
if(ql <= l and r <= qr){
int L = lower_bound(all(tree[node]), val) - tree[node].begin();
if (!L) {
return 0;
}
return sum[node][L-1];
}
int mid = l + r >> 1, lc = node + node, rc = 1 + lc;
return (query(l, mid, ql, qr, val, lc)+ query(mid + 1, r, ql, qr, val, rc));
}
};
inline void solve() {
int n, l, r;
cin >> n;
rep(i,2,n) {
cin >> l >> r;
v[l].pb(r);
v[r].pb(l);
}
dfs(1, 1);
rep(i,1,n) {
cin >> val[i];
a[idx[i]] = val[i];
}
merge_sort_tree obj;
obj.build(1, n, 1);
obj.done();
int ans = 0;
rep(i,1,n) {
if (sz[ar[i]] == 1) {
continue;
}
int l = i+1, r = i + sz[ar[i]] - 1;
if (l <= r) {
ans += obj.query(1, n, l, r, val[ar[i]], 1);
}
}
cout << ans;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int t = 1;
solve();
return 0;
}
Ly8gSSBjYW4ndCB0ZWxsIHlvdSB3aGF0IGl0IHJlYWxseSBpcywKLy8gSSBjYW4gb25seSB0ZWxsIHlvdSB3aGF0IGl0IGZlZWxzIGxpa2UuCiNpbmNsdWRlICJiaXRzL3N0ZGMrKy5oIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHJlcChpLGEsbikgZm9yIChpbnQgaSA9IGE7IGkgPD0gbjsgKytpKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIFAgcGFpciA8IGludCwgaW50ID4gCiNkZWZpbmUgcyBzZWNvbmQKI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgYWxsKHYpICB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBsYih2LCB4KSAgbG93ZXJfYm91bmQoYWxsKHYpLCB4KSAtIHYuYmVnaW4oKQojZGVmaW5lIHVwKHYsIHgpICB1cHBlcl9ib3VuZChhbGwodiksIHgpIC0gdi5iZWdpbigpCgpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IE4gPSAyZTUgKyA1OwoKdmVjdG9yIDwgaW50ID4gdltOXTsKaW50IHZhbFtOXSwgaWR4W05dLCBhcltOXSwgb2sgPSAxOwppbnQgc3pbTl07Cgp2b2lkIGRmcyhpbnQgeCwgaW50IHApIHsKICAgIGFyW29rXSA9IHg7CiAgICBpZHhbeF0gPSBvaysrOwogICAgc3pbeF0gPSAxOwogICAgZm9yIChpbnQgaSA6IHZbeF0pIHsKICAgICAgICBpZiAoaSAhPSBwKSB7CiAgICAgICAgICAgIGRmcyhpLCB4KTsKICAgICAgICAgICAgc3pbeF0gKz0gc3pbaV07CiAgICAgICAgfQogICAgfQp9CgoKaW50IGFbTl07CnZlY3RvciA8IGludCA+IHRyZWVbTiA8PCAyXSwgc3VtW048PDJdOwoKY2xhc3MgbWVyZ2Vfc29ydF90cmVleyAgICAgICAgCiAgICAgICAgcHVibGljOgogICAgICAgIHZvaWQgYnVpbGQoaW50IGwsIGludCByLCBpbnQgbm9kZSl7CiAgICAgICAgICAgIGlmKGwgPT0gcil7CiAgICAgICAgICAgICAgICB0cmVlW25vZGVdLnBiKGFbbF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgbWlkID0gbCArIHIgPj4gMSwgbGMgPSBub2RlICsgbm9kZSwgcmMgPSAxICsgbGM7CiAgICAgICAgICAgIGJ1aWxkKGwsIG1pZCwgbGMpOyAgICBidWlsZChtaWQgKyAxLCByLCByYyk7CgogICAgICAgICAgICBtZXJnZShhbGwodHJlZVtsY10pLCBhbGwodHJlZVtyY10pLCBiYWNrX2luc2VydGVyKHRyZWVbbm9kZV0pKTsKICAgICAgICB9CiAgICAgICAgdm9pZCBkb25lKCkgewogICAgICAgICAgICBpbnQga2l0ID0gTjw8MjsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBraXQ7ICsraSkgewogICAgICAgICAgICAgICAgc3VtW2ldLnJlc2l6ZSh0cmVlW2ldLnNpemUoKSk7CiAgICAgICAgICAgICAgICBpZiAoIXRyZWVbaV0uZW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICBzdW1baV1bMF0gPSB0cmVlW2ldWzBdOwogICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCB0cmVlW2ldLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgc3VtW2ldW2pdID0gc3VtW2ldW2otMV0gKyB0cmVlW2ldW2pdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGludCBxdWVyeShpbnQgbCwgaW50IHIsIGludCBxbCwgaW50IHFyLCBpbnQgdmFsLCBpbnQgbm9kZSl7CiAgICAgICAgICAgIGlmKHFyIDwgbCB8fCByIDwgcWwpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgaWYocWwgPD0gbCBhbmQgciA8PSBxcil7CiAgICAgICAgICAgICAgICBpbnQgTCA9IGxvd2VyX2JvdW5kKGFsbCh0cmVlW25vZGVdKSwgdmFsKSAtIHRyZWVbbm9kZV0uYmVnaW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIUwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICByZXR1cm4gc3VtW25vZGVdW0wtMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgbWlkID0gbCArIHIgPj4gMSwgbGMgPSBub2RlICsgbm9kZSwgcmMgPSAxICsgbGM7CgogICAgICAgICAgICByZXR1cm4gKHF1ZXJ5KGwsIG1pZCwgcWwsIHFyLCB2YWwsIGxjKSsgcXVlcnkobWlkICsgMSwgciwgcWwsIHFyLCB2YWwsIHJjKSk7CiAgICAgICAgfQp9OwoKaW5saW5lIHZvaWQgc29sdmUoKSB7CiAgIGludCBuLCBsLCByOwogICBjaW4gPj4gbjsKICAgcmVwKGksMixuKSB7CiAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgdltsXS5wYihyKTsKICAgICAgIHZbcl0ucGIobCk7CiAgIH0KICAgZGZzKDEsIDEpOwogICByZXAoaSwxLG4pIHsKICAgICAgIGNpbiA+PiB2YWxbaV07CiAgICAgICBhW2lkeFtpXV0gPSB2YWxbaV07CiAgIH0KICAgbWVyZ2Vfc29ydF90cmVlIG9iajsKICAgb2JqLmJ1aWxkKDEsIG4sIDEpOwogICBvYmouZG9uZSgpOwogICBpbnQgYW5zID0gMDsKICAgcmVwKGksMSxuKSB7CiAgICAgICBpZiAoc3pbYXJbaV1dID09IDEpIHsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICAgIGludCBsID0gaSsxLCByID0gaSArIHN6W2FyW2ldXSAtIDE7CiAgICAgICBpZiAobCA8PSByKSB7CiAgICAgICAgICAgYW5zICs9IG9iai5xdWVyeSgxLCBuLCBsLCByLCB2YWxbYXJbaV1dLCAxKTsKICAgICAgIH0KICAgfQogICBjb3V0IDw8IGFuczsKfQpzaWduZWQgbWFpbigpIHsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogIGNpbi50aWUoTlVMTCk7CiAgY291dC50aWUoTlVMTCk7CiAgaW50IHQgPSAxOwogIHNvbHZlKCk7CiAgcmV0dXJuIDA7Cn0=