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] << ' ';
}