Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <set>#define ll long long#define mst(a,x) memset(a,x,sizeof(a))using namespace std;const int N = 100005;int f[N], n, ans, v[2 * N], fst[N], nxt[2 * N], tot, mx, dep[N];void dfs(int x){int y;f[x] = 0;for(int p = fst[x]; ~p; p = nxt[p]){y = v[p];dep[y] = dep[x] + 1;dfs(y);f[x] = max(f[x], f[y] + 1);}if(fst[x] == -1){if(~mx) ans = max(ans, dep[x] + mx);}//printf("x %d dep %d, f %d\n",x , dep[x], f[x]);mx = max(mx, f[x]);