Submission #1113837

#TimeUsernameProblemLanguageResultExecution timeMemory
1113837Dan4LifePower Plant (JOI20_power)C++17
0 / 100
3 ms5456 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) const int N = (int)2e5+2; int n; string gen; vector<int> adj[N]; int dp[N][3]; int dfs(int s, int p){ vector<int> v; v.clear(); for(auto u : adj[s]){ if(u==p)continue; v.pb(dfs(u,s)); } if(!sz(v)) return (gen[s]=='1'); int sum = 0, best = 0; for(auto u : v) sum+=u,best=max(best,u); if(gen[s]=='0') return sum; return max(sum-1,best); } int 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; int ans = 0; for(int i = 1; i <= n; i++) ans=max(ans,dfs(i,-1)); cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...