#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <utility>
#include <string>
#include <deque>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
using namespace std;
#define debug printf
//#define debug blackhole
void blackhole(...) {}
int ADJACENT[2000][2000];
int ADJACENT_W[2000][2000];
int ADJ_N[2000];
int V;
long RECURSE(long FROM_W, long FROM_V, int v) {
long ss = 0;
if (ADJ_N[v] == 1) return FROM_W;
for (int i = 0; i < ADJ_N[v]; i++) {
if (ADJACENT[v][i] == FROM_V) continue;
ss += RECURSE(ADJACENT_W[v][i], v, ADJACENT[v][i]);
if (FROM_W != -1 && FROM_W < ss) {
ss = FROM_W; break;
}
}
if (FROM_W != -1 && FROM_W < ss) ss = FROM_W;
return ss;
}
void GO(int KOR) {
for (int i=0;i<V;i++) {
ADJ_N[i]=0;
}
for (int i = 0; i < V - 1; i++) {
int a, b, weight;
scanf("%d%d%d", &a, &b, &weight);
ADJACENT[a][ADJ_N[a]] = b;
ADJACENT_W[a][ADJ_N[a]++] = weight;
ADJACENT[b][ADJ_N[b]] = a;
ADJACENT_W[b][ADJ_N[b]++] = weight;
}
printf("%ld\n", RECURSE(-1, -1, KOR));
}
int main() {
while (true) {
int KOR;
if (scanf("%d%d", &V, &KOR) != 2) break;
GO(KOR);
}
return 0;
}