树的直径
f[x],d[x];//f[i]表示以i的子树中最长链的长度。d[i]表示以从i走到的最深长度. inline void dfs(int x) { vis[x]=1; for(int i=link[x];i;i=a[i].next) { int y=a[i].y; if(vis[y]) continue; dfs(y); f[x]=max(f[x],d[x]+d[y]+1); d[x]=max(d[x],d[y]+1); } } for(int i=1;i<=n;i++) ans=max(ans,f[x]);