import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
protected int nodesCnt;
protected int centralNode;
protected int[][] edges;
protected int[][] edgesPrice;
protected int[] edgesCnt;
Main p = new Main();
p.run();
}
while (input.ready()) {
this.nodesCnt = this.nextInt();
this.centralNode = this.nextInt();
edges = new int[nodesCnt + 1][nodesCnt];
edgesPrice = new int[nodesCnt + 1][nodesCnt];
edgesCnt = new int[nodesCnt + 1];
for (int i = 0; i < this.nodesCnt - 1; i++) {
int b = this.nextInt();
int e = this.nextInt();
int price = this.nextInt();
edges[b][edgesCnt[b]] = e;
edges[e][edgesCnt[e]] = b;
edgesPrice[b][edgesCnt[b]] = price;
edgesPrice[e][edgesCnt[e]] = price;
edgesCnt[b]++;
edgesCnt[e]++;
}
System.
out.
println(getPrice
(centralNode,
-10)); }
}
protected int getPrice(int node, int parent) {
int closeMePrice = 0;
int closeChildrenPrice = 0;
for (int i = 0; i < edgesCnt[node]; i++) {
if (edges[node][i] != parent) {
closeMePrice += edgesPrice[node][i];
closeChildrenPrice += getPrice(edges[node][i], node);
}
}
if (closeChildrenPrice == 0) {
return closeMePrice;
}
return Math.
min(closeMePrice, closeChildrenPrice
); }
while (!st.hasMoreTokens()) {
}
return st.nextToken();
}
return Integer.
parseInt(nextToken
()); }
return input.readLine();
}
}