voidadd(int a, int b){ E[idx].to = b, E[idx].next = h[a], h[a] = idx++; }
voiddfs(int u, int fa){ dp[u][0] = 1; for (int i = h[u]; ~i; i = E[i].next) { int v = E[i].to; if (v == fa) continue; dfs(v, u); res += dp[v][0] * dp[u][1]; res += dp[v][1] * dp[u][0]; dp[u][0] += dp[v][1]; dp[u][1] += dp[v][0]; } }
intmain(){ memset(h, -1, sizeof(h)); cin >> n; for (int i = 1; i < n; i++) { int x, y; cin >> x >> y; add(x, y); add(y, x); } dfs(1, 0); cout << res << '\n'; return0; }