#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector> Graph(N); for(int i=0; i> u >> v; u--; v--; Graph.at(u).push_back(v); Graph.at(v).push_back(u); } auto dfs = [&](auto dfs,int pos,int back) -> pair { vector> kid; for(auto to : Graph.at(pos)) if(to != back) kid.push_back(dfs(dfs,to,pos)); if(kid.size() == 0) return {1,0}; int retw = 0,retb = 0,sumb = 0,sumw = 0; vector D; for(auto [w,b] : kid) sumb += b,D.push_back(w-b); sort(D.begin(),D.end()); D.push_back(1001001); retw = retb = sumb+1; int n = Graph.at(pos).size(); for(int i=0; i<(n-1)/2; i++) sumb += D.at(i); retb = min(retb,sumb); sumb += D.at((n-1)/2); retw = min(retw,sumb); return {retw,retb}; }; auto [W,B] = dfs(dfs,0,-1); cout << W << endl; }