Submission
Status:
------------------------------
Score: 0
User: hmmm
Problemset: Sirabyrinth 6
Language: cpp
Time: 0.011 second
Submitted On: 2025-03-06 22:23:55
#include<bits/stdc++.h>
using namespace std;
using ll=long long int;
const int N=2e4+5;
vector<array<ll,2>> g[N];
ll dp[N];
inline ll rec(int x,int p){
if(dp[x]!=-1) return dp[x];
ll cnt=0,mx=0,sum=0,t,cnt2=0;
for(auto e:g[x]){
auto xx=e[0];
auto ll=e[1];
if(xx==p) continue;
t=rec(xx,x);
cnt+=ll;
cnt2+=t;
mx=max(mx,ll);
sum++;
}
// cout << x << ' ' << cnt << ' ' << sum << ' ' << mx << "\n";
if(sum>1){
cnt-=mx;
cnt*=2;
cnt+=mx;
}
// cout << x << ' ' << cnt << ' ' << sum << ' ' << mx << "\n";
return dp[x]=cnt+cnt2;
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int n,k;
cin >> n >> k;
for(int i=1;i<n;i++){
int u,v,w;
cin >> u >> v >> w;
g[u].push_back({v,w});
g[v].push_back({u,w});
}
memset(dp,-1,sizeof dp);
cout << rec(k,k);
// cout << "\n";
// for(int i=0;i<n;i++) cout << dp[i] << ' ';
}