武当派一共有 nn 人,门派内 nn 人按照武功高低进行排名,武功最高的人排名第 11,次高的人排名第 22,... 武功最低的人排名第 nn。现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师父,每个人可能有多个徒弟。

我们知道,武当派人才辈出,连祖师爷的武功都只能排行到 pp。也就是说徒弟的武功是可能超过师父的,所谓的青出于蓝胜于蓝。

请你帮忙计算每个人的所有子弟(包括徒弟的徒弟,徒弟的徒弟的徒弟....)中,有多少人的武功超过了他自己。

输入格式

输入第一行两个整数 n, p(1 \le n \le 100000, 1 \le p \le n)n,p(1≤n≤100000,1≤p≤n)。

接下来 n-1n−1 行,每行输入两个整数 u, v(1 \le u, v \le n)u,v(1≤u,v≤n),表示 uu 和 vv 之间存在师徒关系。

输出格式

输出一行 nn 个整数,第 ii 个整数表示武功排行为 ii 的人的子弟有多少人超过了他。

行末不要输出多余的空格

样例输入复制

10 5
5 3
5 8
3 4
3 1
2 1
6 7
8 7
9 8
8 10

样例输出复制

0 0 2 0 4 0 1 2 0 0
/*
@Author: Top_Spirit
@Language: C++
*/
#include <bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int Maxn = 1e5 + 100 ;
const double eps = 1e-6 ;int n, p ;
vector < int > ve[Maxn] ;
int l[Maxn], r[Maxn], low[Maxn] ;
int Index, vis[Maxn] ;int lowbit(int i) { return i & (-i); }void add(int i){while (i <= n){low[i]++ ;i += lowbit(i) ;}
}int getans (int i){int ans = 0 ;while (i){ans += low[i] ;i -= lowbit(i) ;}return ans ;
}void dfs(int p , int zoon){if (vis[p]) return ;vis[p] = 1 ;l[p] = ++Index ;for (int i = 0; i < ve[p].size() ; i++){int to = ve[p][i] ;dfs(to, p) ;}r[p] = Index ;
}int main (){cin >> n >> p ;for (int i = 1; i < n; i++) {int u, v ;cin >> u >> v ;ve[u].push_back(v) ;ve[v].push_back(u) ;}dfs(p, -1) ;for (int i = 1; i <= n; i++){cout << getans(r[i]) - getans(l[i]) << " \n"[i == n] ;add(l[i]) ;}return 0 ;
}

计蒜客 青出于蓝胜于蓝 (树状数组 + dfs序)相关推荐

  1. 计蒜客-青出于蓝胜于蓝 dfs+树状数组

    题目描述: 武当派一共有 n人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都 ...

  2. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2545  Solved: 1419 [Submit][S ...

  3. [BZOJ 2434][Noi2011]阿狸的打字机(AC自动机+树状数组+dfs序)

    Description 打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母.经阿狸研究发现,这个打字机是这样工作的: ·输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母 ...

  4. HDU - 5877 Weak Pair(离散化+树状数组+dfs序)

    题目链接:点击查看 题目大意:给定一个n个节点的树,每个节点都有权值,现在定义weak pair(u,v)需要满足的两个条件: u是v的祖先: ; 问给定的树中有多少个weak pair: 题目分析: ...

  5. 【BZOJ3653】谈笑风生 离线+树状数组+DFS序

    [BZOJ3653]谈笑风生 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称"a比b不知道高明到哪里去了&quo ...

  6. Apple Tree(树状数组+dfs序+邻接表数组(链式前向星) )

    链接:http://poj.org/problem?id=3321 Description There is an apple tree outside of kaka's house. Every ...

  7. 牛客练习赛22 E 树状数组 + DFS + 拓展欧几里德定理

    题目链接 题意: 给定一个长度为nnn的序列,进行mmm次操作,操作有两类: 111 LLL RRR vvv : 区间[L,R][L, R][L,R]的每个数加上vvv 222 LLL RRR ppp ...

  8. hdu 6203 ping ping ping(贪心+树状数组+dfs序)

    题目链接:hdu 6203 ping ping ping 题意: 给你一棵n+1个节点树,现在有q条路径不通,问你最少有多少个节点坏掉了. 题解: 考虑贪心,对这q条路径求一下lca,按照lca的深度 ...

  9. 牛客练习赛52 BGalahad 树状数组

    传送门 题意: 求一个区间的和,但如果某一个数在这个区间出现了多次,这个数只能被计算一次. 官方题解:按右端点从小到大排序.建立树状数组ccc,维护贡献的前缀和. 由于权值ai 满足1≤ai≤500  ...

  10. CodeForces 396C 树状数组 + DFS

    本主题开始看到以为段树或树状数组,但是,对于一个节点的有疑问的所有子节点的加权,这一条件被视为树的根,像 然后1号是肯定在第一层中,然后建立一个单向侧倒查,然后记录下来 其中每个节点 层,终于 两个节 ...

最新文章

  1. 编译原理练习题(第三章)
  2. tensorflow中的seq2seq例子为什么需要bucket? 有关tensorflow 的sequence2sequence例子,为什么需要用到buckets,rnn不是可以处理任意长度的数据吗
  3. 小程序wx:key中的关键字*this
  4. 腾讯民汉翻译征战全国机器翻译大赛夺得双冠
  5. 高斯卷积核如何生成 C语言实现
  6. 你家用的净水设备有哪些微生物污染呢?
  7. 一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
  8. 深度强化学习之稀疏奖励(Sparse Reward)
  9. Java EE 8终于给出即将完成的迹象
  10. C陷阱与缺陷(学习笔记)
  11. 微波雷达感应开关,雷达感应智能模块,照明节能环保技术应用
  12. 微信公众号 | 封面图及缩略图设置及修改技巧
  13. gis核密度分析工具_核密度分析工具的初探(Kernel Density)
  14. 公开信息查询的一些方法,查征信,查婚姻状况,查询公开个人信息
  15. 数据挖掘-贡献度分析
  16. FastDFS文件上传和下载(java代码实现)
  17. 计算机组成ar什么意思,到底什么是AR技术?
  18. 编译原理--实验2 语法分析
  19. 罗技M590优联无法使用的问题解决
  20. 仿IOS沉浸式状态栏实现

热门文章

  1. 免费动态域名解析软件dnspod每步nat123体会
  2. pr2打印机java 编程
  3. 计算机专业买笔记本电脑游戏本还是商务本好,购买笔记本电脑,游戏本真的是第一选择吗?...
  4. Matlab-CSMA_CA,pure ALOHA,时隙ALOHA协议性能对比分析仿真
  5. 分享咖啡基础知识——从咖啡小白到咖啡发烧友需要了解的那些事儿!
  6. WIN10外接显示器有妙招
  7. 灵感爆发:An/flash 影片剪辑动画播放一遍后,摆脱paly()的控制
  8. AR5B22网卡折腾记录
  9. 跑步为什么不能过量(对身体的危害)
  10. PHP月考---给自己建个错题本