题上要求找长度为偶数的路径。根据常识可知 偶 = 偶 + 偶 = 奇 + 奇。
所以我们可以考虑深度,算出每个节点的深度,深度为偶数的和偶数组合,深度奇数的和奇数组合。
因为x到y和y到x属于一条路,不考虑顺序,所以答案是个组合数。
也是就图片说明
其中a、b分别为深度为奇、偶数的节点个数
注意结果炸int

#include<bits/stdc++.h>
using namespace std;
vector<int>e[1<<17];
long long a,b;
void dfs(int x,int f,int dep){
    if(dep&1) a++;
    else b++;
    for(auto it:e[x]){
        if(it==f) continue;
        dfs(it,x,dep+1);
    }
}
int main(){
    int n;cin>>n;
    for(int i=1;i<n;i++){
        int x,y;cin>>x>>y;
        e[x].push_back(y);
        e[y].push_back(x);
    }
    dfs(1,0,0);
    cout<<a*(a-1)/2+b*(b-1)/2;
    return 0;
}