#include #include #include #include using namespace std; int main() { int n; cin >> n; vector>> g(n); for (int i = 1; i < n; ++i) { int u, v, w; cin >> u >> v >> w; --u, --v; g[u].emplace_back(v, w); g[v].emplace_back(u, w); } vector dis1(n), dis2(n); auto bfs = [&](int s) -> vector { vector dis(n, 1e18); vector check(n); check[s] = 1; queue q; dis[s] = 0; for (q.push(s); !q.empty(); q.pop()) { auto now = q.front(); for (auto [to, c] : g[now]) { if (!check[to]) { dis[to] = dis[now] + c; check[to] = 1; q.push(to); } } } return dis; }; dis1 = bfs(0); int id1 = 0; for (int i = 0; i < n; ++i) { if (dis1[i] > dis1[id1]) { id1 = i; } } dis2 = bfs(id1); long long ans = 0; for (int i = 0; i < n; ++i) ans = max(ans, dis2[i]); cout << ans << endl; }