제출 #1113838

#제출 시각아이디문제언어결과실행 시간메모리
1113838Dan4LifePower Plant (JOI20_power)C++17
0 / 100
2 ms5712 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]; 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]); } if(!sz(v)) { dp[s]=(gen[s]=='1'); return; } 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); } 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; 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...