题目
思路来源
洛谷题解AT_abc173_f Intervals on Tree 题解 - 洛谷专栏
题解
一棵树,考虑加边的过程,加一条边减少一个连通块
那么,逆向这个过程,没删一条边,就多一个连通块
树:点的个数=边的个数+1
森林:点的个数=边的个数+连通块个数
所以,连通块个数=点的个数-边的个数
连通块贡献=点的贡献-边的贡献,然后分开统计
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans;
signed main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++)
ans+=i*(n-i+1);
for(int i=1,x,y;i<n;i++){
cin>>x>>y;
ans-=min(x,y)*(n-max(x,y)+1);
}
cout<<ans;
}