Submission #1129358

#TimeUsernameProblemLanguageResultExecution timeMemory
1129358Hamed_GhaffariBeads and wires (APIO14_beads)C++20
0 / 100
6 ms5108 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pll = pair<ll, ll>; using pii = pair<int, int>; #define SZ(x) int(x.size()) #define pb push_back #define all(x) x.begin(), x.end() #define maxs(a, b) (a = max(a,b)) #define mins(a, b) (a = min(a,b)) #define Mp make_pair #define mid ((l+r)>>1) const int MXN = 2e5+1; const int INF = 1e9; int n; ll dp[MXN][2]; vector<pii> g[MXN]; void insert(ll &mx1, ll &mx2, ll &mx3, ll x) { if(x>=mx1) mx3=mx2, mx2=mx1, mx1=x; else if(x>=mx2) mx3=mx2, mx2=x; else if(x>=mx3) mx3=x; } // ll erase(ll mx1, ll mx2, ll mx3, ll x) { // if(x==mx1) return mx2+mx3; // if(x==mx2) return mx1+mx3; // return mx1+mx2; // } void dfs(int v, int p=0) { ll sum=0, mx1=-INF, mx2=-INF, mx3=-INF; for(auto [u,w]: g[v]) if(u!=p) { dfs(u, v); ll val = max(dp[u][0], dp[u][1]+w); sum += val; insert(mx1, mx2, mx3, dp[u][0]+w-val); } dp[v][0] = sum + max(0ll, mx1+mx2); dp[v][1] = sum + max(mx1, mx1 + mx2 + mx3); } int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n; for(int i=0,u,v,w; i<n-1; i++) { cin >> u >> v >> w; g[u].pb(Mp(v,w)); g[v].pb(Mp(u,w)); } dfs(1); cout << dp[1][0] << '\n'; 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...