Submission #1137373

#TimeUsernameProblemLanguageResultExecution timeMemory
1137373PekibanBeads and wires (APIO14_beads)C++20
0 / 100
2 ms4936 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back const int N = 2e5 + 5; int dp[N][2]; vector<array<int, 2>> g[N]; void dfs(int s, int e = -1) { dp[s][0] = 0, dp[s][1] = 0; int mx = -1e9; for (auto [u, w] : g[s]) { if (u == e) continue; dfs(u, s); dp[s][1] += max(dp[u][0], dp[u][1] + w), mx = max(mx, w + dp[u][0] - max(dp[u][0], dp[u][1] + w)); dp[s][0] += max(dp[u][0], dp[u][1] + w); } dp[s][1] += mx; for (auto [u, wu] : g[s]) { for (auto [v, wv] : g[s]) { if (u == v || u == e || v == e ) continue; mx = wu + wv + dp[u][0], dp[v][0]; for (auto [t, w] : g[s]) { if (t == u || t == v || t == e) continue; mx += max(dp[t][0], dp[t][1] + w); } dp[s][0] = max(dp[s][0], mx); } } } int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 1; i < n; ++i) { int u, v, w; cin >> u >> v >> w; g[u].pb({v, w}); g[v].pb({u, w}); } dfs(1); cout << dp[1][0] << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...