Submission #448262

#TimeUsernameProblemLanguageResultExecution timeMemory
448262JovanBPower Plant (JOI20_power)C++17
100 / 100
180 ms29044 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; string s = "0"; int res; int dp[200005]; vector <int> graf[200005]; void dfs(int v, int par){ int mx = 0; for(auto c : graf[v]){ if(c == par) continue; dfs(c, v); dp[v] += dp[c]; mx = max(mx, dp[c]); } if(s[v] == '1') res = max(res, 1+mx); else res = max(res, dp[v]); dp[v] -= s[v]-'0'; if(dp[v] <= 0 && s[v] == '1') dp[v] = 1; //cout << v << " " << dp[v] << endl; res = max(res, dp[v]); } int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; int n; cin >> n; for(int i=1; i<n; i++){ int a, b; cin >> a >> b; graf[a].push_back(b); graf[b].push_back(a); } string g; cin >> g; s += g; dfs(1, 0); cout << res; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...