A. Radio Prize
题目大意
给你一颗树,每个节点都有一个点权值,两点之间还有一定的距离让你求出每个节点到其他所有节点的点权值之和乘以两点的距离 之和;
解题思路
代码
#include<bits/stdc++.h>
using namespace std;
#define pa pair<int,long long>
#define ll long long
const int M=100100;
int t[M];
int de[M];
// si 表示以这个节点为跟的子树一共有几个节点
// sit表示以这个节点为跟的子树所有节点的 点权值 的和是多少
int si[M],sit[M];
// si_lu 这个节点 到 以这个节点为跟节点的子树的其他节点的所有权值和是多少
// si_ye 以这个节点为跟节点的子树的其他节点的 点权值乘以到这个节点的距离的和
ll si_lu[M],si_ye[M];
ll ans[M];
int n;
ll sum=0;//统计所有节点的权值和
vector<pa> ve[M];
void