#include <bits/stdc++.h>   using namespace std;   inline long long read() {     long long x = 0, f = 0;     char ch = getchar();     for (; ch <  0  || ch >  9 ; ch = getchar()) f ^= (ch ==  - );     for (; ch >=  0  && ch <=  9 ; ch = getchar()) x = x * 10 + ch -  0 ;     return f ? -x : x;   }   const long long maxn = 200050;   long long n, head[maxn], cnt = 0, siz[maxn], dep[maxn];   long long ans = 0, qwq = 0;   struct node {     long long to, nxt;   } e[maxn * 2];   inline void add(long long u, long long v) {     e[++cnt].to = v;     e[cnt].nxt = head[u];     head[u] = cnt;   }   void dfs(long long u, long long f, long long d) {     siz[u] = 1;     dep[u] = d;     for (long long i = head[u]; i; i = e[i].nxt) {       long long v = e[i].to;       if (v == f) continue;       dfs(v, u, d + 1);       siz[u] += siz[v];     }   }   signed main() {     n = read();     for (long long i = 1, a, b; i < n; ++i) {       a = read();       b = read();       add(a, b);       add(b, a);     }     dfs(1, 0, 0);     for (long long i = 1; i <= n; ++i) {       ans += siz[i] * (n - siz[i]);       if (dep[i] & 1) ++qwq;     }     ans += qwq * (n - qwq);     printf( %lld n , ans / 2);     return 0;   }   