HDU 2376 Average distance(树上两点间的期望)

来源:互联网 发布:传智播客python怎么样 编辑:程序博客网 时间:2024/06/05 08:10
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=20005;struct node{    int x,y;    int v,next;}edge[maxn];int head[maxn],cnt,n;int sz[maxn];double an;int add(int x,int y,int v){    edge[cnt].x=x;    edge[cnt].y=y;    edge[cnt].v=v;    edge[cnt].next=head[x];    head[x]=cnt++;}int dfs(int root,int fa){    sz[root]=1;    for(int i=head[root];i!=-1;i=edge[i].next)    {        int a=edge[i].y;        int b=edge[i].v;        if(a==fa)   continue;        dfs(a,root);        sz[root]=sz[root]+sz[a];        an=an+(double)(n-sz[a])*sz[a]*b;    }}int main(){    int t;  scanf("%d",&t);    while(t--)    {        memset(head,-1,sizeof(head));        memset(sz,0,sizeof(sz));        cnt=0;        scanf("%d",&n);        for(int i=0;i<n-1;i++)        {            int x,y,z;  scanf("%d%d%d",&x,&y,&z);            add(x,y,z); add(y,x,z);        }        an=0.0;        dfs(0,-1);        printf("%.7f\n",an/ (1.0 * n * (n - 1) / 2.0));    }}

Average distance

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 943    Accepted Submission(s): 318
Special Judge


Problem Description
Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d01 + d02 + d03 + d04 + d12 +d13 +d14 +d23 +d24 +d34)/10 = (6+3+7+9+9+13+15+10+12+2)/10 = 8.6.



 

Input
On the first line an integer t (1 <= t <= 100): the number of test cases. Then for each test case: 

One line with an integer n (2 <= n <= 10 000): the number of nodes in the tree. The nodes are numbered from 0 to n - 1. 

n - 1 lines, each with three integers a (0 <= a < n), b (0 <= b < n) and d (1 <= d <= 1 000). There is an edge between the nodes with numbers a and b of length d. The resulting graph will be a tree. 

 

Output
For each testcase: 

One line with the average distance between two vertices. This value should have either an absolute or a relative error of at most 10-6

 

Sample Input
150 1 60 2 30 3 73 4 2
 

Sample Output
8.6
 

Source
bapc2007
 

Recommend
lcy   |   We have carefully selected several similar problems for you:  2378 2379 2377 2380 2381 
 
0 0
原创粉丝点击