Submission #1166077

#TimeUsernameProblemLanguageResultExecution timeMemory
1166077GurbanBeads and wires (APIO14_beads)C++17
0 / 100
3 ms4932 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int inf = 1e9; const int maxn=2e5+5; int n; int dp[maxn][2]; vector<pair<int,int>>E[maxn]; void dfs(int nd,int par){ dp[nd][0] = 0; dp[nd][1] = -inf; int md = -inf; for(auto i : E[nd]){ int to = i.first; int w = i.second; if(to != par){ dfs(to,nd); int gain = max(dp[to][0], dp[to][1] + w); dp[nd][0] += gain; md = max(md, dp[to][0] + w - gain); } } if(md != -inf){ dp[nd][1] = dp[nd][0] + md; } } int main(){ ios::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 1;i < n;i++){ int x,y,w; cin >> x >> y >> w; E[x].push_back({y,w}); E[y].push_back({x,w}); } int ans = 0; for(int i = 1;i <= n;i++){ dfs(i,-1); // cout<<i<<" --> "<<dp[i][0]<<' '<<dp[i][1]<<'\n'; ans = max(ans,max(dp[i][0],dp[i][1])); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...