#include<bits/stdc++.h> using namespace std; class Graph{ vector<int>*adj; int n; public: Graph(int n){ n=n+1; this->n=n; adj=new vector<int>[n]; } void addEdge(int u,int v){ adj[u].push_back(v); adj[v].push_back(u); } vector<int>* adjList(){ return adj; } }; void dfs(vector<int>*adj,int u,vector<int>&vis,int par,vector<int>&parArr,vector<pair<int,int>>&edg){ if(vis[u])return; vis[u]=1; for(auto v:adj[u]) dfs(adj,v,vis,u,parArr,edg); if(par==-1)return; if(parArr[u]!=parArr[par])return; if(parArr[u] && parArr[par])return; parArr[u]=parArr[par]=1; edg.push_back({u,par}); } int main(){ system("CLS"); int n;cin>>n; Graph g(n); for(int i=0;i<n-1;++i){ int a,b;cin>>a>>b; g.addEdge(a,b); } vector<int>*adj= g.adjList(); vector<int>vis(n+1,0),vis2(n+1,0); vector<int>parArr(n+1,0); vector<pair<int,int>>edg; dfs(adj,1,vis,-1,parArr,edg); cout<<edg.size(); return 0; };