#include <cstdlib> #include <cstdio> #include <vector> #include <algorithm> #include <climits> #include <iostream> using namespace std; struct Node{ Node(){visited=false;} bool visited; vector<int> edges; vector<int> egeval; }; int n,cn; vector<Node> nodes; int solve(int n, int eval){ //cout << n << " " << eval << endl; nodes[n].visited = true; int alt = 0; int cc = 0; for( int i = 0; i < nodes[n].edges.size(); i++ ){ if(!nodes[nodes[n].edges[i]].visited){ alt+=solve(nodes[n].edges[i],nodes[n].egeval[i]); cc++;} } if(!cc)return eval; //cout << "alt " << alt << endl; return min(eval,alt); } int main(int argc, char * argv[]){ int a,b,c; while(scanf("%d %d",&n,&cn)==2){ nodes.resize(0); nodes.resize(n); cn--; for( int i = 0; i < (n-1); i++ ){ scanf("%d%d%d",&a,&b,&c); a--;b--; nodes[a].edges.push_back(b); nodes[b].edges.push_back(a); nodes[a].egeval.push_back(c); nodes[b].egeval.push_back(c); } printf("%d\n",solve(cn,INT_MAX)); } return 0; }