传送门
题解:
在同一奇偶性深度的节点可以组合出长度为偶数的长度。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+7;
int odd,even,cnt,ne[N<<1],head[N],e[N<<1];
void add(int a,int b)
{
e[cnt]=b,ne[cnt]=head[a],head[a]=cnt++;
}
void dfs(int u,int fa,int dep)
{
if(dep&1) odd++;
else even++;
for(int i=head[u];~i;i=ne[i]){
int j=e[i];
if(j==fa) continue;
dfs(j,u,dep+1);
}
}
signed main(){
memset(head,-1,sizeof head);
int n; scanf("%d",&n);
for(int i=1;i<n;i++){
int a,b; scanf("%d%d",&a,&b);
add(a,b),add(b,a);
}
dfs(1,-1,0);
cout<<odd*(odd-1)/2+even*(even-1)/2<<endl;
}