#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |