/* */ //#pragma comment(linker, "/STACK:16777216") #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define y0 sdkfaslhagaklsldk #define y1 aasdfasdfasdf #define yn askfhwqriuperikldjk #define j1 assdgsdgasghsf #define tm sdfjahlfasfh #define lr asgasgash #define norm asdfasdgasdgsd #define eps 1e-9 #define M_PI 3.141592653589793 #define bs 666013 #define bsize 256 using namespace std; const int INF = 1e9; const int N = 100031; int n, k; vector >g[N]; vector G[N]; int dep[N]; int dep2[N]; int used[N]; int p_pos[N]; void dfs(int v) { used[v] = 1; for (int i = 0; i < g[v].size(); i++) { int to = g[v][i].second; int cost = g[v][i].first; if (used[to]) continue; dep[to] = dep[v] + cost; dep2[to] = dep2[v] + 1; G[v].push_back(to); p_pos[to] = G[v].size() - 1; dfs(to); } } long long res; int ptr[N]; vector S; int BOUND; void DFS(int v,int p) { if (v == 1) ptr[v] = 0; else if (p_pos[v] == 0) ptr[v] = ptr[p]; else ptr[v] = ptr[G[p][p_pos[v] - 1]]; while (ptr[v] + 1 < S.size() && dep[S[ptr[v]]] < dep[v] - BOUND) ++ptr[v]; //cout << v << "$" << S.size() << " " << ptr[v] << " " << dep[S[ptr[v]]] << " " << dep[v] << " " << BOUND << endl; res += S.size() - ptr[v] - 1; for (int i = 0; i < G[v].size(); i++) { int to = G[v][i]; S.push_back(to); DFS(to, v); S.pop_back(); } } long long solve(int bound) { res = 0; for (int i = 1; i <= n; i++) { ptr[i] = 0; } BOUND = bound; S.clear(); S.push_back(1); DFS(1,1); //cout << bound<<" "<> n >> k; for (int i = 1; i < n; i++) { int a, b, c; cin >> a >> b >> c; g[a].push_back(make_pair(c,b)); g[b].push_back(make_pair(c,a)); } for (int i = 1; i <= n; i++) sort(g[i].begin(), g[i].end()); dfs(1); /*for (int i = 1; i <= n; i++) { cout << i << "%" << dep[i] << endl; }*/ int l, r; l = 0; r = 1e9 + 1e6; while (l < r) { int mid = l + r; mid /= 2; if (solve(mid) >= k) r = mid; else l = mid + 1; } if (l>1e9 + 1e5) cout << -1 << endl; else cout << l << endl; cin.get(); cin.get(); return 0; }