#include <bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize("O3,unroll-loops")
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
const int maxn=2e5;
vector<int>adj[maxn+2];
int n,dp[maxn+2];
int ans;
int p[maxn+2];
void dfs(int cur,int par){
int tot=0,mx=0;
for(auto x : adj[cur]){
if(x==par)continue;
dfs(x,cur);
tot+=dp[x],mx=max(mx,dp[x]);
}
ans=max({ans,mx+p[cur],tot-p[cur]});
dp[cur]=max({p[cur],tot-p[cur]});
}
signed main(){
cin>>n;
for(int q=1;q<n;q++){
int u,v;
cin>>u>>v;
adj[u].pb(v);
adj[v].pb(u);
}
for(int q=1;q<=n;q++){
char x;
cin>>x;
p[q]=x-'0';
}
dfs(1,0);
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... |