PTA | 程序设计类实验辅助教学平台
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e6+10;
int st[N];
ll n,m;//数据可能超int
int h[N],ne[N],e[N],idx;
void add(int a,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int v,int color)
{
st[v]=1;
if(color)m++;
for(int i=h[v];i!=-1;i=ne[i])
{
int j=e[i];
if(st[j]==0)dfs(j,!color);
}
}
int main()
{
memset(h,-1,sizeof h);
scanf("%lld",&n);
for(int i=0;i<n-1;i++)
{
int x,y;
scanf("%d %d",&x,&y);
add(x,y);
add(y,x);
}
dfs(1,1);
printf("%lld\n",m*(n-m)-(n-1));
}