Submission #1255475

#TimeUsernameProblemLanguageResultExecution timeMemory
1255475Seyyed_Mojtaba_MortazaviPower Plant (JOI20_power)C++20
100 / 100
269 ms36760 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 5e5 + 10; int dp[MAXN][2]; bool mark[MAXN]; vector <int> e[MAXN]; void dfs(int v, int par = -1) { int mx1 = 0; int mx2 = 0; int sum = 0; for (auto u : e[v]) { if (u != par) { dfs(u, v); sum += dp[u][1]; mx1 = max(mx1, dp[u][0]); mx2 = max(mx2, dp[u][1]); } } dp[v][0] = max({mx1, mx2 + mark[v], sum - mark[v], (int) mark[v]}); dp[v][1] = max((int) mark[v], sum - mark[v]); } signed main() { int n; cin >> n; for (int i = 1; i < n; i++) { int v, u; cin >> v >> u; e[v].push_back(u); e[u].push_back(v); } for (int i = 1; i <= n; i++) { char c; cin >> c; mark[i] = (c == '1'); } dfs(1); cout << max(dp[1][0], dp[1][1]) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...