Submission #412705

#TimeUsernameProblemLanguageResultExecution timeMemory
412705LastRoninBeads and wires (APIO14_beads)C++14
0 / 100
1 ms460 KiB
#include <bits/stdc++.h> #define speed ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define ll long long #define pb push_back #define mp make_pair #define f first #define s second #define pill pair<ll, ll> using namespace std; const ll N = 1e4 + 10; const ll big = 1e9; ll n; vector<pair<int,int>> g[N]; int dp[N][2]; ll dfs(int v, int p, int z) { dp[v][0] = dp[v][1] = 0; int dp2[3] = {0}; dp2[0] = 0, dp2[1] = -big, dp2[2] = -big; for(auto u : g[v]) { if(u.f != p) dfs(u.f, v, u.s), dp2[2] = max(dp2[2] + dp[u.f][1], dp2[1] + dp[u.f][0] + u.s), dp2[1] = max(dp2[1] + dp[u.f][1], dp2[0] + dp[u.f][0] + u.s), dp2[0] = dp2[0] + dp[u.f][1]; } dp[v][0] = dp2[0]; dp[v][1] = max(dp[v][1], dp2[1] + z); return dp2[2]; } int main() { speed; cin >> n; for(int i = 1, a, b, c; i < n; i++) cin >> a >> b >> c, g[a].pb(mp(b, c)), g[b].pb(mp(a, c)); ll ans = 0; for(int i = 1; i <= n; i++) ans = max(ans, dfs(i, 0, 0)); cout << ans; } /* 10 5 6 9 2 3 5 1 10 8 4 5 9 2 7 8 5 7 10 6 9 4 2 8 9 1 7 5 10 4 10 2 1 2 21 1 3 13 6 7 1 7 9 5 2 4 3 2 5 8 1 6 55 6 8 34 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...