2478. [HZOI 2016]简单的最近公共祖先

★☆   输入文件:easy_LCA.in   输出文件:easy_LCA.out   简单对比
时间限制:2 s   内存限制:128 MB

【题目描述】

给定一棵有n个节点的有根树,根节点为1,每个节点有一个权值wi,求

即求所有无序节点对的LCA的权值之和。

树的节点编号为1~n,LCA表示两节点的最近公共祖先,即在它们的所有公共祖先中离根节点最远的节点。

【输入格式】

第一行一个整数n,表示节点数。

第二行n个正整数,表示每个点的权值。

以下n-1行每行两个整数x,y,表示树上有一条边连接节点x和节点y。

【输出格式】

一个整数,表示答案。

【样例输入】

3
1 2 3
1 2
1 3

【样例输出】

9

【数据范围与约定】

对于30%的数据,n<=1000。

对于60%的数据,n<=100000。

对于100%的数据,1<=n<=1000000,0<wi<=1000000。

【来源】

HZOI 2016

思路:从数据范围来看,去n^2枚举i,j进行计算lca肯定不行,所以转换思想找规律。

可以发现ans+=w[i]*孩子的数量+子树1*子树2+子树1*子树3+······

错因:数组越界。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 3000000
using namespace std;
int n,tot;
long long ans;
int w[MAXN],size[MAXN],dad[MAXN];
int to[MAXN],head[MAXN],net[MAXN];
void add(int u,int v){
to[++tot]=v;net[tot]=head[u];head[u]=tot;
to[++tot]=u;net[tot]=head[v];head[v]=tot;
}
void dfs(int now){
size[now]=;
for(int i=head[now];i;i=net[i])
if(dad[now]!=to[i]){
dad[to[i]]=now;
dfs(to[i]);
ans+=1ll*size[now]*size[to[i]]*w[now];
size[now]+=size[to[i]];
}
}
int main(){
freopen("easy_LCA.in","r",stdin);
freopen("easy_LCA.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&w[i]);
ans+=w[i];
}
for(int i=;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
}
dfs();
printf("%lld",ans);
}

最新文章

  1. 更新chrom遇到flash过期解决办法
  2. C++ 箴言
  3. JS技术大全(防止复制,粘贴等)
  4. [troubleshoot][archlinux][X] GPU HANG
  5. win7局域网里输入正确密码也访问不了其他的机器
  6. Java学习----Java概述
  7. Spring依赖注入:注解注入总结
  8. Windows 系统消息范围和前缀,以及消息大全
  9. 织梦搜索页使用arclist标签
  10. HyperLedger Fabric 1.1 手动部署单机单节点
  11. SqlSugar 盲点
  12. Java高级特性-String、StringBuffer和StringBuilder
  13. pycharm terminal &#39;import&#39; 不是内部或外部命令,也不是可运行的程序
  14. JDK动态代理Demo代码,进一步学习分析
  15. PHP 7.3: &quot;continue&quot; targeting switch is equivalent to &quot;break&quot;. Did you mean to use &quot;continue 2&quot;? &#183; Issue #4037 &#183; aces/Loris
  16. &lt;20190106&gt;千兆 小型局域网传输速率不达标问题解决
  17. python hashable
  18. Simultaneous Localization and Mapping Technology Based on Project Tango
  19. 【bzoj3576】 Hnoi2014—江南乐
  20. chrome如何在选项卡打开网页

热门文章

  1. bzoj2427:[HAOI2010]软件安装(Tarjan+tree_dp)
  2. [Swift通天遁地]三、手势与图表-(11)制作雷达图表更加形象表示各个维度的情况
  3. Codeforces 825D 二分贪心
  4. 【Leetcode】474. Ones and Zeroes
  5. 大数据插入Excel报错处理
  6. Unity学习-碰撞检测(七)
  7. Unity学习-工具准备(一)
  8. 笔记《精通css》第4章 背景图像,平铺方式,背景定位,圆角框,投影,不透明
  9. React Native真机调试安卓版
  10. 用C#在Visual Studio写Javascript单元测试