#include <cstdio> #include <vector> #include <cstring> using namespace std; #define maxn 100010 int n, kk, med; vector<int> v[maxn], w[maxn]; long long k, paths; int st[maxn], f[maxn]; int df(int nod, int dst, int p) { f[nod]=1; st[++kk]=dst; while(st[kk]-st[p]>med) ++p; paths=paths+kk-p; for(int i=0; i<v[nod].size(); ++i) { int fiu = v[nod][i]; if(f[fiu]) continue; df(fiu, dst+w[nod][i], p); } --kk; } int main() { scanf("%d%lld", &n, &k); for(int i=1; i<n; ++i) { int a, b, c; scanf("%d%d%d", &a, &b, &c); v[a].push_back(b); v[b].push_back(a); w[a].push_back(c); w[b].push_back(c); } int left=0, right=1000000000, sol=-1; while(left<=right) { paths=0; kk=0; med=(left+right)/2; memset(f, 0, sizeof(f)); df(1, 0, 1); if(paths<k) { sol=med; left=med+1; } else right=med-1; } printf("%d\n", sol+1); return 0; }