【HDU-2376】Average distance

题意:

给你一个树,求树上任意两个点之间的距离的平均值

题解:

就是求出任意两点之间的距离和然后除以边数
”任意两点之间的距离“ 和怎么算?
我们去考虑边的贡献情况:
对于边(u,v),u是v的父亲节点,siz[v]表示以v为根的子树的节点数量(包含v),(n-siz[v]) 表示不在以v为根的子树的节点数量,这两部分中各选一个点,构成的连线都会经过(u,v),n是总节点,那么答案就是这个边的贡献就是:ans=(n-siz[v]) * siz[v] * w

代码:

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
const int MAXN = 1e4+10;
int n;
vector<pair<int,int> > e[MAXN];
LL dp[MAXN],sum[MAXN];void dfs(int cur,int father)
{sum[cur] = 1;int len = e[cur].size();for(int i = 0; i < len; ++i){int v = e[cur][i].first;if(v == father)    continue;dfs(v,cur);sum[cur] += sum[v];dp[cur] += dp[v] + sum[v]*(n-sum[v])*(e[cur][i].second);}return;
}int main()
{int T;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i = 0; i <= n; ++i){e[i].clear();dp[i] = sum[i] = 0;}int u,v,w;for(int i = 0; i < n-1; ++i){scanf("%d%d%d",&u,&v,&w);e[u].push_back(make_pair(v,w));e[v].push_back(make_pair(u,w));}dfs(1,-1);printf("%.11f\n",(double)(dp[1]/(n*(n-1)/2.0)));}
}

【HDU-2376】Average distance相关推荐

  1. 【HDU - 2376】Average distance (树,平均距离,算贡献)

    题干: Given a tree, calculate the average distance between two vertices in the tree. For example, the ...

  2. 大数加法【HDU 1002】

    大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...

  3. 【 HDU - 5093】Battle ships(匈牙利算法,二分图匹配)

    题干: Dear contestant, now you are an excellent navy commander, who is responsible of a tough mission ...

  4. 【HDU - 1455】Sticks (dfs + 剪枝)

    题干: George took sticks of the same length and cut them randomly until all parts became at most 50 un ...

  5. 【HDU - 4006】The kth great number (优先队列,求第k大的数)

    题干: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to wri ...

  6. 【HDU - 4217 】Data Structure? (线段树求第k小数)

    题干: Data structure is one of the basic skills for Computer Science students, which is a particular w ...

  7. 【HDU - 1754】I Hate It (线段树模板 单点覆盖更新+区间最大值查询)

    题干: 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.  这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当 ...

  8. 【HDU 5765】Bonds(进制运算妙用)

    [HDU 5765]Bonds(进制运算妙用) Bonds Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  9. 【HDU 5755】Gambler Bo(高斯消元)

    [HDU 5755]Gambler Bo(高斯消元) Gambler Bo Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072 ...

最新文章

  1. 设计模式学习笔记清单
  2. linux dns中文域名,Nginx 中文域名配置详解及实现
  3. 使用BigQuery分析GitHub上的C#代码
  4. PetShop之ASP.NET缓存 --one
  5. 安卓开发中,什么样的功能适合抽取成 Library?
  6. 数论基础——扩展欧几里得算法(模板)
  7. python控制台输出_替换Python中的控制台输出
  8. Modelsim 教程
  9. 8个免费查找文献的学术网站
  10. 偏微分方程的数值解(六): 偏微分方程的 pdetool 解法
  11. PHP第一季视频教程.李炎恢.学习笔记(二)(第2章 基本语法(1))
  12. ajax传参的3种形式
  13. css实现分割线功能,各种各样的分割线(附效果图)
  14. 如何选择一个合适的物联网模块
  15. 用计算机电脑怎么做ppt软件,电脑做ppt的软件叫什么
  16. RT-Thread学习笔记|TCS34725 RGB 颜色识别传感器详解
  17. 长按android版本,Android系统长按power实现键硬件关机—高通sdm845
  18. 分鱼问题c语言,五人分鱼问题(附答案)
  19. 经典游戏制作教程[小糊涂的灵感]
  20. 从伽利略船舱到光子马拉松-破坏相对论的可能性及其后果

热门文章

  1. 1300多名硕博研究生被清退!全都是活该?真相有时候比表面更让人无奈......
  2. 粉丝回馈 | 用30天换来了这辈子独一无二的纪念
  3. 蜗蜗 Linux内核芬妮下,201402 - 蜗窝科技
  4. h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析
  5. 2×3卡方检验prism_卡方独立性检验原理
  6. lumen 配置数据库结果自动转数组_lumen 数据库操作 Cannot use object of type stdClass as array...
  7. java thread join()_Java Thread join() 的用法
  8. java web编写计算器_javaWeb 使用 jsp 和 javaBean 实现计算器功能
  9. 职称计算机还用考试,职称计算机考试注意事项
  10. linux管理Windows文件,Linux与Windows互传文件,用户组管理和用户管理