Submission #1166078

#TimeUsernameProblemLanguageResultExecution timeMemory
1166078GurbanBeads and wires (APIO14_beads)C++17
28 / 100
1095 ms5444 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,dp[i][0]); } 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...