#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll max(ll a,ll b){
return a>=b?a:b;
}
vector<ll> nn[(ll)3e5+1];
vector<ll> dp(3e5+1);
void fun(ll x,ll y,ll fa){
for(auto z:nn[x]){
if(z==fa) continue;
fun(z,y,x);
dp[x]+=dp[z]+1;
}
dp[x]=max(dp[x]-y,0);
return;
}
void solve(){
ll n;cin>>n;
for(ll i=1;i<n;++i){
ll x,y;cin>>x>>y;
nn[x].push_back(y);
nn[y].push_back(x);
}
ll l=0,r=n;
while (l < r){
int mid = (l + r) >> 1;
dp.clear();
fun(1,mid,0);
if (dp[1]==0)
r = mid;
else
l = mid + 1;
}
cout<<l<<'\n';
return;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
while(t--)
solve();
return 0;
}
不懂啊