HDU 4705 Y(树型DP)

来源:互联网 发布:笔记本声音端口号 编辑:程序博客网 时间:2024/05/21 17:03
#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <algorithm>#include <vector>#include <queue>#pragma comment(linker, "/STACK:16777216")#define LL long long using namespace std;const int MAXN = 100000 + 10;int val[MAXN];vector<int>G[MAXN];int n;LL ans;void dfs(int u, int pre){val[u] = 1;int tmp = 0, sz = G[u].size();for(int i=0;i<sz;i++){int v = G[u][i];if(v == pre) continue;dfs(v, u);ans += (long long)(tmp * val[v]);val[u] += val[v];tmp += val[v];}ans += (long long)tmp * (n - val[u]);}int main(){while(scanf("%d", &n)!=EOF){for(int i=0;i<=n;i++) G[i].clear();int u, v;for(int i=1;i<n;i++){scanf("%d%d", &u, &v);G[u].push_back(v);G[v].push_back(u);}ans = 0;dfs(1, -1);LL tot = (long long)n * (n-1) *(n - 2) / 6;printf("%I64d\n", tot - ans);}return 0;}

0 0
原创粉丝点击