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

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

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

输入格式

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

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

输出格式

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

行末不要输出多余的空格

样例输入

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

#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) (x&(-x))
typedef long long ll;
using namespace std;
/*
树状数组就是来求前缀和,有忘了,wuwuwu...
我知道要求dfs序,但是不知道怎么来求一段区间内的小于等于某个值的数量
我们都是从最小值网上走的,我们是按照val,来的,所以直接查询,在【l,r】
内的数量就可以了,优美
*/
const int maxn=1e5+10;
int cnt;
int head[maxn*2];
struct Edge{int v,nt;
}edge[maxn*2];
void add_edge(int u,int v){edge[cnt].nt=head[u];edge[cnt].v=v;head[u]=cnt++;
}
int l[maxn],r[maxn];void dfs(int now,int fa,int& id){l[now]=++id;//for(int i=head[now];i!=-1;i=edge[i].nt){int v=edge[i].v;if(v==fa) continue;dfs(v,now,id);}r[now]=id;
}void print(int n){for(int i=1;i<=n;i++){printf("i:%d %d %d\n",i,l[i],r[i]);}
}
int n;
int tr[maxn];
int get_sum(int x){int sum=0;while(x>0){sum+=tr[x];x-=lowbit(x);}return sum;
}void update(int x,int val){while(x<=n){tr[x]+=val;x+=lowbit(x);}
}
int ans[maxn];int main(){cnt=0;memset(head,-1,sizeof(head));int rt;scanf("%d %d",&n,&rt);for(int i=1;i<n;i++){int u,v;scanf("%d %d",&u,&v); add_edge(u,v);add_edge(v,u);}int id=0;dfs(rt,-1,id);
//  print(n);for(int i=1;i<=n;i++){ans[i]=get_sum(r[i])-get_sum(l[i]);update(l[i],1);}for(int i=1;i<=n;i++){if(i==1) printf("%d",ans[i]);else    printf(" %d",ans[i]);}printf("\n");return 0;
} 

J. 青出于蓝胜于蓝(dfs序+树状数组)相关推荐

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

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

  2. 【dfs序+树状数组】多次更新+求结点子树和操作,牛客小白月赛24 I题 求和

    前置知识点 dfs遍历 树状数组/线段树知识 链接 I题 求和. 题意 已知有 n 个节点,有 n−1 条边,形成一个树的结构. 给定一个根节点 k,每个节点都有一个权值,节点i的权值为 vi 给 m ...

  3. HDU - 5788 Level Up(主席树+dfs序+树状数组)

    题目链接:点击查看 题目大意:给出一棵有向树,每个节点都有一个初始的权值 a[ i ] ,和一个通过计算得到的权值 mid[ i ] ,mid 数组的计算方法如下:mid[ u ] 为结点 u 及其子 ...

  4. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组

    武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...

  5. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  6. 【bzoj2434】[Noi2011]阿狸的打字机 AC自动机+Dfs序+树状数组

    题目描述 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小 ...

  7. CF-547E(Mike and Friends)后缀数组+线段树 AC自动机+DFS序+树状数组

    题目链接 题意 NNN个串,每次询问区间[L,R][L,R][L,R]中有多少子串SiS_iSi​ 思路 把NNN个串合成一个长字符串,对这个长字符串求后缀数组,包含SiS_iSi​的子串的heigh ...

  8. Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

    题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, -, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子 ...

  9. HDU 6203 ping ping ping (在线倍增lca+DFS序+树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203 #include<bits/stdc++.h> using namespace st ...

  10. [Split The Tree][dfs序+树状数组求区间数的种数]

    Split The Tree 时间限制: 1 Sec  内存限制: 128 MB 提交: 46  解决: 11 [提交] [状态] [讨论版] [命题人:admin] 题目描述 You are giv ...

最新文章

  1. 视频直播点播nginx-rtmp开发手册中文版
  2. 使用Roslyn将代码编译成单独的网络模块并将它们组装成动态库
  3. 超清晰的 DNS 原理入门指南 (资源)
  4. wpf之lable右下角放关闭图标
  5. 高并发之——并发测试工具ab
  6. 文件夹内批量修改文件名称
  7. python爬取裁判文书_使用selenium爬取裁判文书网
  8. C盘扩容:如何把D盘内存扩展到c盘?
  9. Winedit 下载第三方库
  10. c语言srand函数用法,srand
  11. 怎么画出好的架构图,架构师必备。。
  12. hashTabel List 和 dic
  13. 采购中心如何高效管理供应商的质量?
  14. 前端必会三种CSS布局
  15. [长安战疫-cazy] Web题解
  16. 大学四年如何有效的使用『牛客』平台
  17. codeforces Hello 2021
  18. BP神经网络简单应用实例,bp神经网络的设计方法
  19. 打开和关闭HDMI输出方法
  20. 区块链公有链、私有链和联盟链是什么?它们有什么特点?

热门文章

  1. 区块链是什么?华为云学院带你领略区块链的前世今生
  2. html的embed标签的元素隐藏,HTML-embed标签详解
  3. 汽车零部件开发的流程及项目管理--陈新春老师
  4. python简易网络验证(零成本)
  5. 使用聚合数据接口发送短信
  6. C#本地化国际化解决方案实现简介
  7. tumblr_如何在您的Tumblr博客中添加论坛
  8. html tooltips效果,html5tooltips.js – 一款轻量级的3D工具提示插件
  9. 笔记本电脑接上hdmi后 笔记本无声音
  10. Asp.Net MVC 实用视频教程