#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; int n; vector g[200020]; int d[200020]; void dfs(int x, int p){ for(auto y:g[x]){ if(y==p) continue; d[y]=d[x]+1; dfs(y, x); } } int diam; int s, t; int d2[200020]; void dfs2(int x, int p){ for(auto y:g[x]){ if(y==p) continue; d2[y]=d2[x]+1; dfs2(y, x); } } int ans[200020]; int num; void dfs0(int x, int p){ ans[x]=num; int nx=-1; for(auto y:g[x]){ if(y==p) continue; if(d[y]+d2[y]==diam){ nx=y; continue; } num++; dfs0(y, x); num++; } if(nx!=-1){ num++; dfs0(nx, x); num++; } } int main() { int n; cin>>n; for(int i=0; i>x>>y; x--; y--; g[x].push_back(y); g[y].push_back(x); } dfs(0, -1); for(int i=0; id[s]) s=i; } d[s]=0; dfs(s, -1); for(int i=0; id[t]) t=i; } diam=d[t]; cout<<2*(n-1)-diam<