#include using namespace std; using i64 = long long; vector> g; int last; void dfs(int v, int f) { last = v; for(int to : g[v]) { if(f == to) continue; dfs(to, v); } } vector dist; int main() { int N; cin >> N; g.resize(N); vector a(N - 1), b(N - 1); for(int i = 0;i < N - 1;i++) { cin >> a[i] >> b[i]; a[i]--; b[i]--; g[a[i]].push_back(b[i]); g[b[i]].push_back(a[i]); } dfs(0, -1); dist.resize(N, -1); queue que; dist[last] = 0; que.push(last); while(!que.empty()) { int v = que.front(); que.pop(); for(int t : g[v]) { if(dist[t] == -1) { dist[t] = dist[v] + 1; que.push(t); } } } int vv = *max_element(begin(dist), end(dist)); vv++; cout << N - vv << endl; }