题目:http://codeforces.com/contest/600/problem/E

看博客:https://blog.csdn.net/blue_kid/article/details/82192641

https://blog.csdn.net/clove_unique/article/details/60772212

还是不太明白复杂度...

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const xn=1e5+;
int n,c[xn],hd[xn],ct,to[xn<<],nxt[xn<<],cnt[xn],siz[xn],son[xn],mx,big;
ll ans[xn],sum;
void add(int x,int y){to[++ct]=y; nxt[ct]=hd[x]; hd[x]=ct;}
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
void dfs(int x,int fa)
{
siz[x]=;
for(int i=hd[x],u;i;i=nxt[i])
{
if((u=to[i])==fa)continue;
dfs(u,x); siz[x]+=siz[u];
if(siz[u]>siz[son[x]])son[x]=u;
}
}
void add(int x,int fa,int v)
{
cnt[c[x]]+=v;
if(cnt[c[x]]>mx)sum=c[x],mx=cnt[c[x]];
else if(cnt[c[x]]==mx)sum+=c[x];
for(int i=hd[x],u;i;i=nxt[i])
if((u=to[i])!=fa&&u!=big)add(u,x,v);
}
void dfs2(int x,int fa,int keep)
{
for(int i=hd[x],u;i;i=nxt[i])
if((u=to[i])!=fa&&u!=son[x])dfs2(u,x,);
if(son[x])dfs2(son[x],x,),big=son[x];
add(x,fa,); big=;
ans[x]=sum;
if(!keep)add(x,fa,-),mx=sum=;//=0!
}
int main()
{
n=rd();
for(int i=;i<=n;i++)c[i]=rd();
for(int i=,x,y;i<n;i++)
{
x=rd(); y=rd();
add(x,y); add(y,x);
}
dfs(,); dfs2(,,);
for(int i=;i<=n;i++)printf("%I64d ",ans[i]);
return ;
}

最新文章

  1. Application Request Route实现IIS Server Farms集群负载详解
  2. Le li&#233; &#224; la l&#233;g&#232;ret&#233; semblait &#234;tre et donc plus simple
  3. 总结:在MyEclipse中部署一个wap应用时需要配置的环境变量,我的JDK是安装在C盘,mysql安装在D盘,Tomcat解压在E盘,所以路径一定要看清楚哦,!
  4. React生命周期
  5. robots.txt文件没错,为何总提示封禁
  6. python 注意事项
  7. ssh通道技术
  8. POJ1651:Multiplication Puzzle(区间DP)
  9. UVa-Palindromes
  10. js原生设计模式——7原型模式之真正的原型模式——对象复制封装
  11. 简单的后台数据和前台数据交互.net
  12. CentOS7下安装MySQL的安装与配置(yum) (转)
  13. 机器学习算法与Python实践之(五)k均值聚类(k-means)
  14. Vector 特性
  15. Android 百分比布局库(percent-support-lib) 解析与扩展
  16. ASP.NET 教程汇总
  17. 分离式部署LNMP
  18. Linux Centos7安装最新anslib
  19. day 5,格式化输出,for,while, break,continue,列表
  20. python的os模块总结

热门文章

  1. 树莓派-3 启用root
  2. 运维笔记:zabbix的运用(1)安装过程
  3. ubuntu Android Studio以及SDK安装
  4. vue中的表单验证
  5. Django——分页功能Paginator
  6. 使用回溯法解批处理作业调度问题&lt;算法分析&gt;
  7. CMM
  8. acm 一年总结
  9. runOnUiThread在子进程中更新主进程UI
  10. __asm