Submission #734194

#TimeUsernameProblemLanguageResultExecution timeMemory
734194SanguineChameleonBeads and wires (APIO14_beads)C++17
28 / 100
1062 ms5588 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; void just_do_it(); int main() { #ifdef KAMIRULEZ freopen("kamirulez.inp", "r", stdin); freopen("kamirulez.out", "w", stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); just_do_it(); return 0; } const int maxN = 2e5 + 20; vector<pair<int, int>> adj[maxN]; int par_w[maxN]; int dp[maxN][2]; void dfs(int u, int p) { int tot = 0; int best = -par_w[u]; for (auto x: adj[u]) { int v = x.first; int w = x.second; if (v != p) { par_w[v] = w; dfs(v, u); tot += max(dp[v][0], dp[v][1]); best = max(best, w + dp[v][0] - max(dp[v][0], dp[v][1])); } } dp[u][0] = tot; dp[u][1] = tot + best + par_w[u]; } void just_do_it() { int n; cin >> n; for (int i = 0; i < n - 1; i++) { int u, v, w; cin >> u >> v >> w; adj[u].emplace_back(v, w); adj[v].emplace_back(u, w); } int res = 0; for (int u = 1; u <= n; u++) { dfs(u, -1); res = max(res, dp[u][0]); } cout << res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...