Submission #1201846

#TimeUsernameProblemLanguageResultExecution timeMemory
1201846Szymon_PilipczukBeads and wires (APIO14_beads)C++20
100 / 100
133 ms26508 KiB
#include <bits/stdc++.h> using namespace std; int ans[200000][4]; bool vis[200000]; vector<vector<pair<int,int>>> gr; void dfs(int v) { vis[v] =true; int mx = -2e9; int mx2 = 0; int mx3 = -2e9; vector<pair<int,int>> q; vector<pair<int,int>> q2; int cans = 0; for(int i = 0;i<gr[v].size();i++) { if(!vis[gr[v][i].first]) { dfs(gr[v][i].first); ans[v][0] += ans[gr[v][i].first][1]; ans[v][1] += ans[gr[v][i].first][1]; mx = max(mx,gr[v][i].second+ans[gr[v][i].first][0]-ans[gr[v][i].first][1]); mx2 = max(mx2,ans[gr[v][i].first][3] - ans[gr[v][i].first][1]); ans[v][2] += ans[gr[v][i].first][1]; q.push_back({ans[gr[v][i].first][2]-ans[gr[v][i].first][1]+gr[v][i].second,i}); q2.push_back({ans[gr[v][i].first][0]-ans[gr[v][i].first][1]+gr[v][i].second,i}); cans+=ans[gr[v][i].first][1]; mx3 = max(mx3,ans[gr[v][i].first][2]-ans[gr[v][i].first][1]+gr[v][i].second); } else { ans[v][1] += gr[v][i].second; ans[v][3] += gr[v][i].second; } } ans[v][1] += mx; ans[v][2] += mx2; if(q.size() > 1) { sort(q.begin(),q.end()); reverse(q.begin(),q.end()); sort(q2.begin(),q2.end()); reverse(q2.begin(),q2.end()); if(q[0].second != q2[0].second) { ans[v][2] = max(ans[v][2],cans+q[0].first+q2[0].first); } else { ans[v][2] = max(ans[v][2],max(cans+q[0].first+q2[1].first,cans+q[1].first+q2[0].first)); } } ans[v][3] += mx3+cans; ans[v][3] = max(ans[v][3],ans[v][2]); ans[v][1] = max(ans[v][1],ans[v][0]); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cerr.tie(0); int n; cin>>n; gr.resize(n); for(int i = 0;i<n-1;i++) { int a,b,c; cin>>a>>b>>c; a--;b--; gr[a].push_back({b,c}); gr[b].push_back({a,c}); } dfs(0); cout<<ans[0][2]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...