#include <bits/stdc++.h>
using namespace std;
#define ll int
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(),x.end()
const ll MAXN=5e5+5,MOD=1e9+7,INF=1e9,LG=16;
ll i,n,m,j,k,p,dem,t,ans,sz[MAXN],st;
vector<ll> dp[2][10005];
vector<pair<ll,ll>> adj[10005];
void dfs(ll u,ll pre){
sz[u]=1;
for(auto x:adj[u]){
if(x.fi==pre) continue;
dfs(x.fi,u);
sz[u]+=sz[x.fi];
}
}
// void solve(ll u,ll pre){
// for(auto x:adj[u]){
// if(x.fi==pre) continue;
// solve(x.fi,u);
// for(j=sz[u];j>=1;j--){
// for(i=0;i<min(sz[x.fi],j);i++){
// dp[0][u][j]=min(dp[0][u][j],dp[0][u][j-i-1]+dp[0][x.fi][i]+x.se*2);
// dp[1][u][j]=min(dp[1][u][j],min(dp[0][u][j-i-1]+dp[1][x.fi][i]+x.se,dp[1][u][j-i-1]+dp[0][x.fi][i]+x.se*2));
// }
// }
// }
// }
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("BIRD.inp","r",stdin);
// freopen("BIRD.out","w",stdout);
cin>>n>>m>>st;
for(i=1;i<n;i++){
ll u,v,c;
cin>>u>>v>>c;
adj[u].pb({v,c});
adj[v].pb({u,c});
}
dfs(st,st);
// for(i=1;i<=n;i++){
// dp[0][i].assign(sz[i]+3,0);
// dp[1][i].assign(sz[i]+3,0);
// for(j=1;j<sz[i];j++)
// dp[0][i][j]=dp[1][i][j]=INF;
// }
// solve(st,st);
cout<<dp[1][st][m-1];
}
| # | 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... |