#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define per(i,a,b) for (int i = a; i >= b; i--)
#define pii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define pb push_back
#define all(v) (v).begin(), (v).end()
const int MAXN = 1e2+10; // CHANGE LATER
const int INF = 1e9+10;
const int MOD = 1e9+7;
int dp[MAXN][MAXN][2], sz[MAXN],n;
vector<pii> g[MAXN];
void dfs(int u, int p = -1) {
sz[u] = 1;
for(auto &[v,w] : g[u]) if(v!=p) {
dfs(v,u);
sz[u] += sz[v];
}
int cur = 1;
rep(j,2,sz[u]) dp[u][j][0] = dp[u][j][1] = INF;
for(auto &[v,w] : g[u]) if(v!=p) {
rep(x,0,cur+sz[v]) dp[n+1][x][0] = dp[u][x][0], dp[n+1][x][1] = dp[u][x][1];
rep(x,1,cur) {
rep(y,1,sz[v]) {
dp[n+1][x+y][0] = min(dp[n+1][x+y][0], dp[u][x][0]+dp[v][y][0]+2*w);
dp[n+1][x+y][1] = min(dp[n+1][x+y][1], dp[u][x][1]+dp[v][y][0]+2*w);
dp[n+1][x+y][1] = min(dp[n+1][x+y][1], dp[u][x][0]+dp[v][y][1]+w);
}
}
cur += sz[v];
rep(x,0,cur) dp[u][x][0] = dp[n+1][x][0], dp[u][x][1] = dp[n+1][x][1];
}
}
void solve() {
int k,x; cin >> n >> k >> x;
rep(i,1,n-1) {
int u,v,w;cin >> u >> v >> w;
g[u].pb({v,w});
g[v].pb({u,w});
}
dfs(x);
cout << dp[x][k][1] << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0);cin.tie(nullptr);
int tt = 1;
//cin >> tt;
while(tt--) solve();
}