Submission #389095

#TimeUsernameProblemLanguageResultExecution timeMemory
389095phathnvBeads and wires (APIO14_beads)C++11
0 / 100
4 ms4948 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5 + 7; const int INF = 1e9 + 7; struct Edge{ int v, c; Edge(int _v, int _c){ v = _v; c = _c; } }; int n, dp[N][3]; vector<Edge> adj[N]; void Dfs(int u, int p){ dp[u][0] = 0; dp[u][1] = -INF; dp[u][2] = -INF; for(Edge e : adj[u]){ int v = e.v; int c = e.c; if (v == p) continue; Dfs(v, u); int nxtDp[3] = {-INF, -INF, -INF}; nxtDp[0] = max(nxtDp[0], dp[u][0] + dp[v][0]); nxtDp[0] = max(nxtDp[0], dp[u][0] + dp[v][1] + c); nxtDp[0] = max(nxtDp[0], dp[u][0] + dp[v][2]); nxtDp[1] = max(nxtDp[1], dp[u][0] + dp[v][0] + c); nxtDp[1] = max(nxtDp[1], dp[u][0] + dp[v][2] + c); nxtDp[1] = max(nxtDp[1], dp[u][1] + dp[v][0]); nxtDp[1] = max(nxtDp[1], dp[u][1] + dp[v][1] + c); nxtDp[1] = max(nxtDp[1], dp[u][1] + dp[v][2]); nxtDp[2] = max(nxtDp[2], dp[u][1] + dp[v][0] + c); nxtDp[2] = max(nxtDp[2], dp[u][1] + dp[v][2] + c); nxtDp[2] = max(nxtDp[2], dp[u][2] + dp[v][0]); nxtDp[2] = max(nxtDp[2], dp[u][2] + dp[v][1] + c); nxtDp[2] = max(nxtDp[2], dp[u][2] + dp[v][2]); dp[u][0] = nxtDp[0]; dp[u][1] = nxtDp[1]; dp[u][2] = nxtDp[2]; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i = 1; i < n; i++){ int u, v, c; cin >> u >> v >> c; adj[u].push_back(Edge(v, c)); adj[v].push_back(Edge(u, c)); } Dfs(1, -1); cout << max(dp[1][0], dp[1][2]); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...