题目背景

从前森林里有一棵很大的mjt树,树上有很多小动物。

题目描述

mjt树上有 n 个房间,第 i 个房间住着 ai 只第bi 种小动物。
这n个房间用n-1条路连接起来,其中房间1位mjt树的根。
现在每个房间x的小动物想知道,以房间x为根的mjt树中有多少只它们的同类.
输入输出格式

输入格式:
第一行一个整数n,表示房间数

接下来n行,每行两个整数ai,bi

再之后n-1,每行两个整数x、y,表示x和y之间有一条路径

输出格式:
一行n个数,第i个数表示以房间i为根的mjt树中bi种小动物有多少只,两个数之间用空格隔开

输入输出样例

输入样例#1: 复制
5
2 1
3 1
4 2
5 1
6 2
1 2
1 3
3 4
3 5
输出样例#1: 复制
10 3 10 5 6
说明

bi<=n<=100000,ai<=1000

by xjjppm.

dfs,把他的之前遍历的该编号的数+上子树的减去进入该节点之前遍历的

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn =200007;
struct T{int a,b;
}tree[maxn];
struct node{int v,next;
}edge[maxn];
int n,num=0,head[maxn],sum[maxn];
void add_edge(int a,int b) {edge[++num].v=b;edge[num].next=head[a];head[a]=num;
}
int size[maxn],ans[maxn];void dfs(int x,int f) {ans[x]=size[tree[x].b];size[tree[x].b]+=tree[x].a;for(int i=head[x];i;i=edge[i].next) {int v=edge[i].v;if(v!=f) dfs(v,x);}ans[x]=size[tree[x].b]-ans[x];
}
int main() {scanf("%d",&n);for(int i=1;i<=n;++i) {scanf("%d%d",&tree[i].a,&tree[i].b);}for(int a,b,j=1;j<n;++j) {scanf("%d%d",&a,&b);add_edge(a,b);add_edge(b,a);}dfs(1,0);for(int i=1;i<=n;i++) {printf("%d ",ans[i]);}return 0;
}

转载于:https://www.cnblogs.com/sssy/p/7739396.html

T9270 mjt树相关推荐

  1. 牛客竞赛mjt的毒瘤赛

    题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线. 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如 ...

  2. 判断两个树是否相等和判断tree1是否包含tree2 python实现

    判断两个树是否相等 def equal(node_a, node_b):"""判断两个树是否相等:param node_a: :param node_b: :return ...

  3. 论文溯源树AMiner

    来自 DBLP.ArXiv.STM 等多家学术出版机构和平台的数据表明,在过去 20 年间,计算机科学.物理学.统计学等研究领域的出版物总量都有大幅增加.像 CVPR.AAAI 等有关人工智能等新兴领 ...

  4. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  5. 深度树匹配模型(TDM)

    深度树匹配模型(TDM) 算法介绍 Tree-based Deep Match(TDM)是由阿里妈妈精准定向广告算法团队自主研发,基于深度学习上的大规模(千万级+)推荐系统算法框架.在大规模推荐系统的 ...

  6. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  7. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  8. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  9. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

最新文章

  1. 2005年4月全国计算机等级考试二级C语言笔试试题及答案
  2. 【iOS开发】静态库 a文件合成脚本解释
  3. php sql alert,SQL ALTER
  4. 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
  5. pandas中to_csv()和read_csv()参数详解
  6. 关于pytorch中super的一点思考,结合代码
  7. 122. 买卖股票的最佳时机 II golang
  8. Redis 属于单线程还是多线程?不同的版本有什么区别?
  9. smartctl 输出详解
  10. 在CentOS上的Docker私有注册表
  11. 2.6 相对和绝对路径 2.7 cd命令 2.8 创建和删除目录mkdir/rmdir 2.9 rm命令
  12. oracle in table类型,Oracle Built-in Data Types(Oracle内置数据类型)
  13. 飞腾服务器虚拟化,基于飞腾平台的容器虚拟化技术研究
  14. 发那可g10_fanuc系统中的G10格式会根据输入的数据不同而不同
  15. 计算机控制实验 实验十,自控计控原理实验箱
  16. MATLAB自带插值函数
  17. 【前端小技能】ElementUI表格双击可编辑--开箱即用
  18. 张家港、张家口、张家界、张家川
  19. 如果判断小米MIUI的NFC权限、后台弹出界面权限是否禁用
  20. Bootstrap的基本使用方法介绍

热门文章

  1. java 比较当前时间_java时间比较
  2. shell命令之cd切换目录
  3. 购房攻略—买楼返折扣、返佣金、返京东购物卡、物业费套路
  4. 推荐一本书《Atomic Habits》
  5. mysql 对多列进行排序 分组_Mysql 对多列进行排序
  6. cocos2d-x传智播客_10年和超过520集播客-科技是一场马拉松,而不是短跑
  7. 计算机网络基础--网络体系结构
  8. MPLAB X IDE调试代码
  9. 使用kdevelop出现问题及解决
  10. 啥是jQuery(什么是jQuery)