#include #include #include using namespace std; typedef long long ll; typedef pair P; #define MOD 1000000007 #define REP(i, N) for (int i = 0; i < N; ++i) #define REP1(i, N) for (int i = 1; i <= N; ++i) #define RREP(i, N) for (int i = N - 1; i >= 0; --i) #define ALL(a) a.begin(), a.end() int n; vector G[100000]; int dp[100000][2]; void dfs(int x, int p) { dp[x][0] = 1; dp[x][1] = 0; REP(i, G[x].size()) { if (G[x][i] == p) continue; dfs(G[x][i], x); dp[x][0] += max(dp[G[x][i]][0] - 1, dp[G[x][i]][1]); dp[x][1] += max(dp[G[x][i]][0], dp[G[x][i]][1]); } } int main() { cin >> n; REP(i, n - 1) { int u, v; cin >> u >> v; u--, v--; G[u].push_back(v); G[v].push_back(u); } dfs(0, -1); cout << max(dp[0][0], dp[0][1]) << endl; return 0; }