Submission #1113846

#TimeUsernameProblemLanguageResultExecution timeMemory
1113846Dan4LifePower Plant (JOI20_power)C++17
0 / 100
4 ms6480 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) begin(a),end(a) #define int long long const int N = (int)2e5+2; int n; string gen; vector<int> adj[N]; int dp[N]; void dfs(int s, int p){ vector<int> v; v.clear(); for(auto u : adj[s]){ if(u==p) continue; dfs(u,s); v.pb(dp[u]); } int sum = 0, best = 0; for(auto u : v) sum+=u,best=max(best,u); if(gen[s]=='0') dp[s]=sum; else dp[s]=max(sum-1,best+1); } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 1; i < n; i++){ int a, b; cin >> a >> b; adj[a].pb(b), adj[b].pb(a); } cin >> gen; gen='$'+gen; dfs(1,0); cout << *max_element(dp+1,dp+n+1) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...