Submission #511746

#TimeUsernameProblemLanguageResultExecution timeMemory
511746czhang2718Power Plant (JOI20_power)C++17
0 / 100
3 ms5016 KiB
#include "bits/stdc++.h" using namespace std; const int N=200001; int n; vector<int> adj[N]; int dp[N][2]; string s; void dfs(int x, int par){ dp[x][1]=(s[x]=='1'?1:-1e9); dp[x][0]=(s[x]=='1')*(-1); for(int k:adj[x]){ if(k==par) continue; dfs(k, x); dp[x][0]+=max({0, dp[k][0], dp[k][1]}); } } int main(){ cin.tie(0)->sync_with_stdio(0); cin >> n; for(int i=1; i<n; i++){ int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } cin >> s; s='0'+s; dfs(1, 0); int ans=dp[1][0]; for(int k:adj[1]){ ans=max(ans, dp[1][1]+dp[k][0]); } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...