#include <iostream> // Phan Nguyen Quoc Bao
#include<bits/stdc++.h>
using namespace std;
#define task "coci2021_r1_papricice"
const int N = 2e5 + 5 ;
int n ;
vector<int> D[N] ;
void Inp()
{
cin >> n ;
for(int i = 1 ; i < n ; i++){
int u , v ;
cin >> u>> v;
D[u].push_back(v) ;
D[v].push_back(u) ;
}
}
namespace SUB1{
long long cnt[N] , tin[N] , tout[N] , stt = 0;
void dfs(int u , int p) {
tin[u] = ++stt ;
cnt[u] = 1 ;
for(int v : D[u]){
if(v == p) continue;
dfs(v , u) ;
cnt[u] += cnt[v] ;
}
tout[u] = stt ;
}
bool Ontree(int root , int u){
return tin[root] <= tin[u] && tin[u] <= tout[root] ;
}
int ans = 1e9;
void Solve(){
dfs(1 , 0) ;
for(int i = 2 ; i < n ; i++)
for(int j = i + 1 ; j <= n ;j++)
{
int u = i , v = j , ok = 0 ;
if(Ontree(u , v)){
ok = 1 ;
}
if(Ontree(v , u)){
ok = 1 ;
swap(u , v) ;
}
int vmin , vmax ;
if(ok){
vmin = min(n - cnt[u], min(cnt[v] , cnt[u] - cnt[v])) ;
vmax = max(n - cnt[u] , max(cnt[v] , cnt[u] - cnt[v])) ;
}else {
vmin = min(n - cnt[u] - cnt[v] ,min(cnt[v] , cnt[u])) ;
vmax = max(n - cnt[u] - cnt[v] , max(cnt[v] , cnt[u])) ;
}
ans = min(ans , vmax - vmin) ;
}
cout << ans <<"\n" ;
}
}
namespace SUB2{
set<int> A , B ;
int cnt[N] ;
void dfs(int u , int p){
cnt[u] = 1 ;
for(int v : D[u]){
if(v == p) continue;
dfs(v , u) ;
cnt[u] += cnt[v] ;
}
}
int get_dif(int a , int b , int c){
return max({a , b , c}) - min({a , b , c}) ;
}
vector<int> get_result(const set<int>&A , int x){
vector<int> res ;
auto j = A.upper_bound(x) ;
if(j != A.end()) res.push_back(*j) ;
if(j != A.begin()) {
--j ;
res.push_back(*j) ;
}
return res ;
}
int dfs2(int u , int p){
int res = 1e9 ;
for(auto x : get_result(A , (n + cnt[u]) / 2)){
res = min(res , get_dif(n - x , cnt[u], x - cnt[u])) ;
}
for(auto x : get_result(B , (n - cnt[u]) / 2)){
res = min(res , get_dif(n - x - cnt[u] , x , cnt[u])) ;
}
A.insert(cnt[u]) ;
for(int v : D[u]){
if(v == p) continue;
res = min(res , dfs2(v , u)) ;
}
A.erase(cnt[u]) ;
B.insert(cnt[u]) ;
return res ;
}
void Solve(){
dfs(1 , 0) ;
cout << dfs2(1 , 0) ;
}
}
void Solve()
{
if(n <= 2000){
SUB1::Solve() ;
}else SUB2::Solve() ;
}
void Out()
{
}
int main()
{
ios_base::sync_with_stdio(NULL);cin.tie(NULL);cout.tie(NULL);
if(ifstream(task".INP")){
freopen(task".INP","r",stdin) ;
freopen(task".OUT","w",stdout) ;
}
Inp();
Solve();
Out();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAvLyBQaGFuIE5ndXllbiBRdW9jIEJhbwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHRhc2sgImNvY2kyMDIxX3IxX3BhcHJpY2ljZSIKY29uc3QgaW50IE4gPSAyZTUgKyA1IDsgCmludCBuIDsgCnZlY3RvcjxpbnQ+IERbTl0gOyAgCnZvaWQgSW5wKCkKewogICAgY2luID4+IG4gOyAKICAgIGZvcihpbnQgaSA9IDEgOyBpIDwgbiA7IGkrKyl7CiAgICAgICAgaW50IHUgLCB2IDsKICAgICAgICBjaW4gPj4gdT4+IHY7IAogICAgICAgIERbdV0ucHVzaF9iYWNrKHYpIDsKICAgICAgICBEW3ZdLnB1c2hfYmFjayh1KSA7IAogICAgfQp9Cm5hbWVzcGFjZSBTVUIxewogICAgbG9uZyBsb25nIGNudFtOXSAsIHRpbltOXSAsIHRvdXRbTl0gLCBzdHQgPSAwOwogICAgdm9pZCBkZnMoaW50IHUgLCBpbnQgcCkgewogICAgICAgIHRpblt1XSA9ICsrc3R0IDsgCiAgICAgICAgY250W3VdID0gMSA7IAogICAgICAgIGZvcihpbnQgdiA6IERbdV0pewogICAgICAgICAgICBpZih2ID09IHApIGNvbnRpbnVlOyAKICAgICAgICAgICAgZGZzKHYgLCB1KSA7IAogICAgICAgICAgICBjbnRbdV0gKz0gY250W3ZdIDsgCiAgICAgICAgfQogICAgICAgIHRvdXRbdV0gPSBzdHQgOyAKICAgIH0KICAgIGJvb2wgT250cmVlKGludCByb290ICwgaW50IHUpewogICAgICAgIHJldHVybiB0aW5bcm9vdF0gPD0gdGluW3VdICYmIHRpblt1XSA8PSB0b3V0W3Jvb3RdIDsgCiAgICB9CiAgICBpbnQgYW5zID0gMWU5OwoKICAgIHZvaWQgU29sdmUoKXsgCiAgICAgICAgZGZzKDEgLCAwKSA7CiAgICAgICAgZm9yKGludCBpID0gMiA7IGkgPCBuIDsgaSsrKQogICAgICAgICAgICBmb3IoaW50IGogPSBpICsgMSA7IGogPD0gbiAgO2orKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdSA9IGkgLCB2ID0gaiAsIG9rID0gMCA7IAogICAgICAgICAgICAgICAgICAgIGlmKE9udHJlZSh1ICwgdikpewogICAgICAgICAgICAgICAgICAgICAgICBvayA9IDEgOyAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKE9udHJlZSh2ICwgdSkpewogICAgICAgICAgICAgICAgICAgICAgICBvayA9IDEgOyAKICAgICAgICAgICAgICAgICAgICAgICAgc3dhcCh1ICwgdikgOyAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaW50IHZtaW4gLCB2bWF4IDsgCiAgICAgICAgICAgICAgICAgICAgaWYob2spewogICAgICAgICAgICAgICAgICAgICAgICB2bWluID0gbWluKG4gLSBjbnRbdV0sICBtaW4oY250W3ZdICwgY250W3VdIC0gY250W3ZdKSkgOyAKICAgICAgICAgICAgICAgICAgICAgICAgdm1heCA9IG1heChuIC0gY250W3VdICwgbWF4KGNudFt2XSAsIGNudFt1XSAtIGNudFt2XSkpIDsKICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZtaW4gPSBtaW4obiAtIGNudFt1XSAtIGNudFt2XSAsbWluKGNudFt2XSAsIGNudFt1XSkpIDsgCiAgICAgICAgICAgICAgICAgICAgICAgIHZtYXggPSBtYXgobiAtIGNudFt1XSAtIGNudFt2XSAsIG1heChjbnRbdl0gLCBjbnRbdV0pKSA7IAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBhbnMgPSBtaW4oYW5zICwgdm1heCAtIHZtaW4pIDsgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgY291dCA8PCBhbnMgPDwiXG4iIDsgCiAgICB9Cn0KbmFtZXNwYWNlIFNVQjJ7CiAgICBzZXQ8aW50PiBBICwgQiA7IAogICAgaW50IGNudFtOXSA7CiAgICB2b2lkIGRmcyhpbnQgdSAsIGludCBwKXsKICAgICAgICBjbnRbdV0gPSAxIDsgCiAgICAgICAgZm9yKGludCB2IDogRFt1XSl7CiAgICAgICAgICAgIGlmKHYgPT0gcCkgY29udGludWU7IAogICAgICAgICAgICBkZnModiAsIHUpIDsgCiAgICAgICAgICAgIGNudFt1XSArPSBjbnRbdl0gOyAKICAgICAgICB9CiAgICB9IAogICAgaW50IGdldF9kaWYoaW50IGEgLCBpbnQgYiAsIGludCBjKXsKICAgICAgICAgICByZXR1cm4gbWF4KHthICwgYiAsIGN9KSAtIG1pbih7YSAsIGIgLCBjfSkgOyAgCiAgICB9CiAgICB2ZWN0b3I8aW50PiBnZXRfcmVzdWx0KGNvbnN0IHNldDxpbnQ+JkEgLCBpbnQgeCl7CiAgICAgICAgdmVjdG9yPGludD4gcmVzIDsgCiAgICAgICAgYXV0byBqID0gQS51cHBlcl9ib3VuZCh4KSA7IAogICAgICAgIGlmKGogIT0gQS5lbmQoKSkgcmVzLnB1c2hfYmFjaygqaikgOyAKICAgICAgICBpZihqICE9IEEuYmVnaW4oKSkgewogICAgICAgICAgICAtLWogOyAKICAgICAgICAgICAgcmVzLnB1c2hfYmFjaygqaikgOyAKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlcyA7IAogICAgfQogICAgaW50IGRmczIoaW50IHUgLCBpbnQgcCl7CiAgICAgICAgaW50IHJlcyA9IDFlOSA7IAogICAgICAgIGZvcihhdXRvIHggOiBnZXRfcmVzdWx0KEEgLCAobiArIGNudFt1XSkgLyAyKSl7CiAgICAgICAgICAgIHJlcyA9IG1pbihyZXMgLCBnZXRfZGlmKG4gLSB4ICwgY250W3VdLCB4IC0gY250W3VdKSkgOyAKICAgICAgICB9CiAgICAgICAgZm9yKGF1dG8geCA6IGdldF9yZXN1bHQoQiAsIChuIC0gY250W3VdKSAvIDIpKXsKICAgICAgICAgICAgcmVzID0gbWluKHJlcyAsIGdldF9kaWYobiAtIHggLSBjbnRbdV0gLCB4ICwgY250W3VdKSkgOyAKICAgICAgICB9CiAgICAgICAgQS5pbnNlcnQoY250W3VdKSA7IAogICAgICAgIGZvcihpbnQgdiA6IERbdV0pewogICAgICAgICAgICBpZih2ID09IHApIGNvbnRpbnVlOyAKICAgICAgICAgICAgcmVzID0gbWluKHJlcyAsIGRmczIodiAsIHUpKSA7ICAgICAKICAgICAgICB9CiAgICAgICAgQS5lcmFzZShjbnRbdV0pIDsgCiAgICAgICAgQi5pbnNlcnQoY250W3VdKSA7IAogICAgICAgIHJldHVybiByZXMgOyAKICAgIH0KICAgIHZvaWQgU29sdmUoKXsKICAgICAgICBkZnMoMSAsIDApIDsgCiAgICAgICAgY291dCA8PCBkZnMyKDEgLCAwKSA7IAogICAgfQp9CnZvaWQgU29sdmUoKQp7CiAgICBpZihuIDw9IDIwMDApewogICAgICAgIFNVQjE6OlNvbHZlKCkgOyAKICAgIH1lbHNlIFNVQjI6OlNvbHZlKCkgOyAKCn0Kdm9pZCBPdXQoKSAKewogICAgCn0KaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpO2Npbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CiAgICBpZihpZnN0cmVhbSh0YXNrIi5JTlAiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5JTlAiLCJyIixzdGRpbikgOyAKICAgICAgICBmcmVvcGVuKHRhc2siLk9VVCIsInciLHN0ZG91dCkgOwogICAgfQogICAgSW5wKCk7CiAgICBTb2x2ZSgpOwogICAgT3V0KCk7IAogICAgcmV0dXJuIDA7Cn0K