#include #include using namespace std; const int N=100010; int tot,first[N],nnext[N<<1],to[N<<1]; __gnu_pbds::priority_queueq[N]; void add(int x,int y){ nnext[++tot]=first[x]; first[x]=tot; to[tot]=y; } void dfs(int u,int fa){ int a,b; for(int e=first[u];e;e=nnext[e]){ if(to[e]!=fa){ dfs(to[e],u); q[u].join(q[to[e]]); } } if(q[u].size()==0){ q[u].push(1); return; } if(q[u].size()==1){ a=q[u].top(); q[u].pop(); q[u].push(a+1); return; } a=q[u].top(); q[u].pop(); b=q[u].top(); q[u].pop(); if(a%2||b%2){ q[u].push(a+b+1); } else{ q[u].push(a+b); q[u].push(1); } } int main(){ int n,a,b; scanf("%d",&n); for(int i=1;i<=n-1;i++){ scanf("%d%d",&a,&b); add(a,b); add(b,a); } dfs(1,0); printf("%d",q[1].top()); }