#include #include #include #include #include using namespace std; int main(){ int N; cin >> N; vector> G(N); vector visited(N,false); vector back(N,-1); int start = -1; for(int i=0;i> a >> b; a--, b--; G[a].push_back(b); G[b].push_back(a); if(G[a].size() == 1) start = a; if(G[b].size() == 1) start = b; } queue> Q; Q.push({start,0}); visited[start] = true; int end = 0; int dia = 0; while(!Q.empty()){ pair p = Q.front(); Q.pop(); for(int to : G[p.first]){ if(visited[to]) continue; visited[to] = true; if(dia <= p.second+1){ back[to] = p.first; end = to; dia = p.second+1; } Q.push({to,p.second+1}); } } unordered_set st; while(end != start){ st.insert(end); end = back[end]; } st.insert(start); int ans = 0; for(int i=0;i 0){ for(int to : G[i]){ if(st.count(to)){ if(G[i].size() == 1) ans++; else ans += G[i].size() - 1; break; } else ans += G[i].size() - 1; } } } cout << ans << endl; }