Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>using namespace std;const int N = 110000;vector<int>edge[N];int max(int x, int y){return x > y ? x : y;}int ans;int dfs(int now, int pre){int l = -1, r = -1;for (int i = 0; i < edge[now].size(); i++){if (edge[now][i] == pre) continue;int t = dfs(edge[now][i], now);if (t >= l){r = l;l = t;}else if (t>r){r = t;}}if (ans <= l + r + 2) ans = l + r + 2;return l + 1;}int main(){int n,a,b;