Submission #249079

#TimeUsernameProblemLanguageResultExecution timeMemory
249079receedBeads and wires (APIO14_beads)C++14
0 / 100
3 ms4992 KiB
#include <iostream> #include <iomanip> #include <cstdio> #include <vector> #include <algorithm> #include <cmath> #include <cstring> #include <cassert> #include <string> #include <set> #include <map> #include <random> #include <bitset> #include <string> #include <unordered_set> #include <unordered_map> #include <deque> #include <queue> #define rep(i, n) for (int i = 0; i < (n); i++) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() using namespace std; using ll = long long; using ul = unsigned long long; using ld = long double; const int N = 200001; vector<pair<int, int>> g[N]; ll d0[N], d1[N], inf = 1e11; void dfs(int v, int p) { ll m1 = -inf, m2 = -inf, cm; for (auto &e : g[v]) { if (e.first == p) continue; dfs(e.first, v); ll cx = max(d0[e.first], d1[e.first] + e.second); d0[v] += cx; cm = d0[e.first] - cx + e.second; if (cm > m1) { m2 = m1; m1 = cm; } else if (cm > m2) m2 = cm; } d1[v] = d0[v] + m1; d0[v] = max(d0[v], d0[v] + m1 + m2); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, u, v, w; cin >> n; rep(i, n - 1) { cin >> u >> v >> w; u--; v--; g[u].push_back({v, w}); g[v].push_back({u, w}); } dfs(0, -1); cout << d0[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...