#include #include #include #include using namespace std; using ll = long long; vector>> tree; vector visited; pair dfs(int node, int parent) { pair res = {node, 0}; for (auto [to, weight] : tree[node]) { if (to == parent) continue; auto [far_node, dist] = dfs(to, node); dist += weight; if (dist > res.second) { res = {far_node, dist}; } } return res; } int main() { int N; cin >> N; tree.resize(N + 1); for (int i = 0; i < N - 1; ++i) { int u, v; ll w; cin >> u >> v >> w; tree[u].emplace_back(v, w); tree[v].emplace_back(u, w); } auto [farthest_node, d] = dfs(1, -1); auto [nv, max_dist] = dfs(farthest_node, -1); cout << max_dist << endl; return 0; }