复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50#include <bits/stdc++.h> using namespace std; #define ll long long const int maxn=10010; struct node { int v,w; }a,b; vector<node>tree[maxn]; int sum[maxn],n; ll dp[maxn]; void dfs(int cur,int fa) { sum[cur]=1; for(int i=0;i<tree[cur].size();i++) { int son=tree[cur][i].v; ll len=tree[cur][i].w; if(son==fa) continue; dfs(son,cur); sum[cur]+=sum[son]; dp[cur]+=dp[son]+(n-sum[son])*sum[son]*len; } } int main() { int t,x,y,z; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=0;i<n;i++) tree[i].clear(); memset(sum,0,sizeof(sum)); memset(dp,0,sizeof(dp)); for(int i=1;i<n;i++) { scanf("%d%d%d",&x,&y,&z); a.v=x; a.w=b.w=z; b.v=y; tree[x].push_back(b); tree[y].push_back(a); } dfs(0,-1); printf("%fn",dp[0]*2.0/n/(n-1)); } return 0; }
最后
以上就是聪明马里奥最近收集整理的关于树上顶点的平均距离的全部内容,更多相关树上顶点内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复