#include<bits/stdc++.h>
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n;
std::cin >> n;
std::vector<std::vector<int>> adj(n);
for (int i = 0; i < n - 1; ++i) {
int u, v;
std::cin >> u >> v;
--u, --v;
adj[u].push_back(v);
adj[v].push_back(u);
}
std::string t;
std::cin >> t;
int ans = 0;
auto dfs = [&](auto dfs, int u, int p) -> int {
int s = 0;
for (auto to : adj[u]) {
if (to != p) {
int c = dfs(dfs, to, u);
ans = std::max(ans, c + (t[u] == '1'));
s += c;
}
}
return std::max<int>(s - (t[u] == '1'), t[u] == '1');
};
ans = std::max(ans, dfs(dfs, 0, -1));
std::cout << ans;
}