제출 #1112853

#제출 시각아이디문제언어결과실행 시간메모리
1112853KawakiMeido구슬과 끈 (APIO14_beads)C++17
0 / 100
6 ms4944 KiB
/*Author: KawakiMeido*/ #include <bits/stdc++.h> #define pb push_back #define endl "\n" #define ll long long #define int long long #define all(x) (x).begin(),(x).end() #define pii pair<int,int> #define fi first #define se second using namespace std; /*Constants*/ const int N = 2e5+10; const int INF = 1e9+7; const long long LLINF = 1e15+3; /*TestCases*/ int test=1; void solve(); void TestCases(bool v){ if (v) cin >> test; while(test--) solve(); } /*Global Variables*/ int n; int dp[N][2]; vector<pii> adj[N]; void DP(int u, int p, int w){ int res = 0; vector<pii> tmp; tmp.push_back({-LLINF,0}); tmp.push_back({-LLINF,0}); for (auto in:adj[u]){ int v,val; tie(v,val) = in; if (v==p) continue; DP(v,u,val); res+=dp[v][1]; tmp.push_back({dp[v][0] - dp[v][1] + val,v}); } sort(all(tmp),greater<pii>()); dp[u][0] = dp[u][1] = max(res,res+tmp[0].fi+tmp[1].fi); dp[u][1] = max(dp[u][1],res+tmp[0].fi+w); } /*Solution*/ void solve(){ cin >> n; for (int i=1; i<n; i++){ int u,v,w; cin >> u >> v >> w; adj[u].push_back({v,w}); adj[v].push_back({u,w}); } DP(1,0,0); cout << dp[1][0] << endl; } /*Driver Code*/ signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); TestCases(0); 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...