#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 10;
int dp[MAXN];
bool mark[MAXN];
vector <int> e[MAXN];
void dfs(int v, int par = -1)
{
int sum = 0;
for (auto u : e[v])
{
if (u != par)
{
dfs(u, v);
sum += dp[u];
}
}
dp[v] = max((int) mark[v], sum - mark[v]);
}
signed main()
{
int n, ans = 0;
cin >> n;
for (int i = 1; i < n; i++)
{
int v, u;
cin >> v >> u;
e[v].push_back(u);
e[u].push_back(v);
}
for (int i = 1; i <= n; i++)
{
char c;
cin >> c;
mark[i] = (c == '1');
}
for (int i = 1; i <= n; i++)
{
if (mark[i])
{
dfs(i);
for (auto u : e[i])
ans = max(ans, dp[u] + 1);
ans = max(ans, dp[i]);
}
}
cout << ans << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |