Solution
1131-Tree_Diameter.cpp
1#include <bits/stdc++.h>
2using namespace std;
3
4#define int long long
5
6const int MAXN = 2e5+5;
7vector<int> adj[MAXN];
8
9pair<int, int> dfs(int i, int p) {
10 pair<int, int> ret = {0, i};
11 for (int &x: adj[i]) {
12 if (x == p) continue;
13 pair<int, int> tmp = dfs(x, i);
14 ++tmp.first;
15 ret = max(ret, tmp);
16 }
17 return ret;
18}
19
20signed main() {
21 ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
22
23 int N;
24 cin >> N;
25
26 for (int i = 1; i < N; ++i) {
27 int u, v; cin >> u >> v;
28 adj[u].emplace_back(v);
29 adj[v].emplace_back(u);
30 }
31
32 pair<int, int> d1 = dfs(1, 0);
33 pair<int, int> d2 = dfs(d1.second, 0);
34
35 cout << d2.first << '\n';
36 return 0;
37}Editorial not yet generated for this problem. Run the editorial generation script to add hints and detailed explanations.