제출 #734192

#제출 시각아이디문제언어결과실행 시간메모리
734192SanguineChameleon구슬과 끈 (APIO14_beads)C++17
28 / 100
1064 ms5332 KiB
#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; vector<int> gain; 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]); gain.push_back(w + dp[v][0] - max(dp[v][0], dp[v][1])); } } sort(gain.begin(), gain.end(), greater<int>()); dp[u][0] = tot; dp[u][1] = max(tot, !gain.empty() ? tot + gain[0] + par_w[u] : -1); } 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...