CODEVS 3023 魔法禁书目录1:追捕大妈
2016-04-30 16:59
267 查看
每条边的贡献是边权*一边的点数*另一边的点数。
#include<iostream> #include<cstdio> #include<cstring> #define maxv 20050 #define maxe 40050 using namespace std; struct edge { long long u,v,w,nxt; }e[maxe]; long long n,a,b,c,g[maxv],size[maxv],nume=0,fath[maxv]; void addedge(long long u,long long v,long long w) { e[++nume].u=u; e[nume].v=v; e[nume].w=w; e[nume].nxt=g[u]; g[u]=nume; } void dfs(long long x,long long father) { fath[x]=father;size[x]=1; for (long long i=g[x];i;i=e[i].nxt) { long long v=e[i].v; if (v!=father) { dfs(v,x); size[x]+=size[v]; } } } int main() { scanf("%lld",&n); for (long long i=1;i<=n-1;i++) { scanf("%lld%lld%lld",&a,&b,&c); addedge(a,b,c); addedge(b,a,c); } dfs(1,0); long long ans=0; for (long long i=1;i<=nume;i+=2) { a=e[i].u,b=e[i].v,c=e[i].w; if (fath[a]==b) swap(a,b); ans+=c*size[b]*(n-size[b]); } double now=(double)ans/(n*n-n); printf("%.2lf\n",now*2); return 0; }
相关文章推荐
- 正向代理与反向代理
- 《UNIX环境高级编程》(进程环境)
- error C4996: 'pcl::SAC_SAMPLE_SIZE': PCL1.8问题汇总
- Java循环练习:已知s=1×2×3×…×n,计算出s不大于5000时n的最大值
- 2.ubuntu 配置目录
- 【自考总结】 操作系统概论
- java学习-字符串2.
- 1026. 程序运行时间(15)
- 英语的五种基本句型
- poj1698二分图多重匹配
- Android 发布项目到 jcenter 遇到的坑
- 递归反转字符串
- HDU 1166
- 关于JAVA 封装性 以及高内聚,低耦合的理解
- 模式设计--适配器、桥接模式
- NSURLSession的介绍和说明
- Leetcode - Compare Version Numbers
- 十一、图的存储---(2)邻接矩阵和邻接表
- NSURLSession的基本使用
- SAP删除会计科目 OBR2