#include <iostream>
#include <cstring>
#include <cstdio>
#include <stack>
using namespace std;
const int N=100005;
int f[N],c[N<<1],s[N<<1],e[N<<1],next[N<<1],n,p,l[N],r[N];
bool vis[N];
void connect(int i,int u,int v){
next[i]=s[u];//同起点
s[u]=i;
e[i]=v;
}
int lowbit(int i){
return i&-i;
}
void update(int x,int y){
for(int i=x;i<=(N<<1);i+=lowbit(i) )
c[i]+=y;
}
int sum(int x){
int ret=0;
for(int i=x;i>0;i-=lowbit(i))
ret+=c[i];
return ret;
}
void dfs(int root){//非递归
int cnt=1;//初始化和下面的cnt++还有求f[i]的下标有关系
stack<int> ss;
ss.push(root);
while(!ss.empty()){
int top=ss.top();
if(!vis[top]){
vis[top]=true;//标记
l[top]=cnt++;//第一次访问
}
bool flag=false;
for(int i=s[top];i;i=next[i]){//枚举下一个节点
if(!vis[e[i]]){
flag=true;
ss.push(e[i]);
s[top]=next[i];//记录当前点遍历到了第几个邻接点了,返回的时候从这个邻接点开始
break;
}
}
if(flag)continue;
if(vis[top]){
ss.pop();
r[top]=cnt++;//第二次访问
}
}
}
/*
void dfs(int x,int pre){//爆栈
int tmp=sum(x-1);
for(int i=s[x];i;i=next[i])
if(e[i]!=pre){
update(e[i],1);
dfs(e[i],x);
}
f[x]=sum(x-1)-tmp;
//r[x]=cnt;
}
*/
int main()
{
int u,v;
while(scanf("%d%d",&n,&p)&&(n+p)){
memset(c,0,sizeof(c));
memset(next,0,sizeof(next));
memset(s,0,sizeof(s));
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
for(int i=1,j=1;i<n;i++){
scanf("%d%d",&u,&v);
connect(j++,u,v);
//connect(j++,v,u);不加的话,wa,,,有自反性,不知哪个为父节点
}
dfs(p);
for(int i=1;i<n;i++){
printf("%d ",sum(r[i]-1)-sum(l[i]));
update(l[i],1);////////////////
}
cout<<sum(r[n]-1)-sum(l[n])<<endl;
}
return 0;
}
相关推荐
AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践
逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif
Counting Offspring dfs序 + 树状数组
传送门 题目描述 给定一棵树,树根的编号为p。 对于每个节点,求以它为根的子树中有多少个节点的编号小于它。 分析 我们可以根据节点的大小,然后把对应位置设置为1,然后我们要求某一个节点的答案的时候,只需要求子树的值即可 我们可以用dfs序和树状数组去维护答案,最后求和即可 代码 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <que
数字后端设计实现 | 数字后端PR工具Innovus中如何创建不同高度的row?
数字IC后端设计实现之innovus中如何创建不同高度的row?
hdu 3887 Counting Offspring 树上求所有节点的子树上比当前节点小的个数 树状数组
Problem DescriptionYou are given a tree, it’s root is p, and the node is numbered from 1 to n. Now define f(i) as the number of nodes whose
VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本)
本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。
从理论到代码:手把手教你用Matlab复现MMC的HSS阻抗模型(附避坑指南)
本文详细介绍了如何使用Matlab复现MMC的HSS阻抗模型,涵盖谐波状态空间(HSS)理论、代码实现步骤及常见问题解决方案。通过谐波线性化和序阻抗建模技术,帮助工程师准确分析MMC的阻抗特性,并提供避坑指南以解决矩阵维度错误、收敛性问题和频域转换陷阱等难点。
HDU3887 Counting Offspring
dfs序,树状数组
STM32F103C8T6实战指南:从零搭建最小系统与GPIO控制
本文详细介绍了STM32F103C8T6微控制器的实战应用,从零开始讲解如何搭建最小系统并进行GPIO控制。内容涵盖电源电路设计、时钟配置、GPIO工作模式详解及实战项目开发,帮助初学者快速掌握这款ARM Cortex-M3内核微控制器的核心开发技能,适用于物联网设备和嵌入式系统开发。
HDU 3887 Counting Offspring dfs序的运用 | 非递归
题目链接 一天时间做了两道 dfs序 的题, 都是 WA 不停,最后一道改成 100W的数组,一道改成双向边就AC了。。能不能再坑一点的。。 好,继续说这道题。。 上一道题苹果树是统计叶子节点的和,这道题是统计叶子节点中比自己权值小的和 思路 首先按照上一道题的惯性思路,会觉得很复杂。因为再算和的时候要额外判断一下大小。由于树状数组是预处理的,显然无法再单独判断,于是就不
控制科学与工程(自动化)保研经验【4】——浙大篇
控制科学与工程(自动化)保研经验【4】——浙大篇
微信小程序 - 最新详细实现模板消息订阅通知功能,给用户微信发送“服务通知“模板消息并点击进入跳转到小程序页面路由,订阅消息通知详细后台申请流程及示例代码,解决授权申请弹框被拒绝后无法调起、常见报错!
微信小程序,vue2,vue3,模板消息,订阅通知,服务通知,小程序模板通知,订阅微信模板消息功能,唤起模板消息订阅弹框并发送服务通知,消息订阅与模板消息发送,一次性订阅,长期永久订阅,申请模板id,详细示例代码教程,配置流程,消息模板,模板ID,用户收不到消息,订阅了通知但微信不来服务通知,报错,小程序平台模板消息订阅功能,唤起订阅模板消息弹框,订阅模板消息发送服务通知功能,如何做模板消息订阅,一直收不到通知,用户通过弹窗订阅,订阅消息,无法打开申请授权弹框,用户拒绝/关闭后,如何引导用户再开启,拒绝后怎
hdu3887 Counting Offspring(dfs序+树状数组)
Counting Offspring Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2635 Accepted Submission(s): 907 Problem Description You are giv
10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?
首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。
hdu3887 Counting Offspring
Counting Offspring Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1148 Accepted Submission(s): 406 Problem Description You are giv
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
[HDU3887]Counting Offspring
Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description You are given a tree, it’s root is ppp, and the node is numbered from 111 to nnn. Now define f(i)f...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
hdu 3887 Counting Offspring
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3887 题意:给出一棵树,对于每一个节点,问他的子孙节点中有多少个节点小于该节点。 思路:首先找出这棵树的DFS序列,每一个节点出现在两个位置,这两个位置之间的节点就是该节点的子孙节点。 然后用树状数组求出这两个位置之间有多少个节点小于该节点。 hdu这题出的有点龊 ,,用dfs搜索会爆栈,要手...
HDU 3887 Counting Offspring 树状数组
/* 题意:1-n在一棵树上,给定边的关系。要求得到每一个顶点的后继节点中比它值小的个数 题解:树状数组。dfs过程中,进入一个节点x前求一次sum(x-1),然后add操作,递归返回节点x后再求一次sum(x-1) 两次sum操作的差值就是比x小的个数 本题数据量大
hdu 3887 Counting Offspring
http://acm.hdu.edu.cn/showproblem.php?pid=3887 Counting Offspring
Counting Offspring(hdu3887)
Counting Offspring Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2759 Accepted Submission(s): 956 Problem Description You are g
HDU 3887 Counting Offspring (树状数组)
思路:对于每个结点深搜,先记录在搜索该结点前已经出现过的比该结点小的结点总数为pre[i],然后搜索并更新该结点的所有子树,最后返回该节点时,再求一次比该结点小的结点总数now[i],则该结点子树中比他小的结点总数就为now[i]-pre[i]。查询出现过比i小的结点总数用树状数组。 #include #include #include #include using namesp
【HDU 3887 Counting Offspring】dfs序 +树状数组
HDU 3887 他要统计子树内小于他的数有多少个 那么我们处理好询问空间 然后排个序 然后用树状数组维护比他小右多少个 答案就是 getsum(arr[i].id) - 1 (不计自身) /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq */...
【HDU 3887 Counting Offspring】 dfs序+树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3887 题目大意: 给你一颗n个节点的数,对于每个节点i,问你每个节点的子树中有多少个节点序列数小于i,求f[i]。 解题思路: 用样例来说明,我们可以先深搜一遍,那么深搜得到的序列就是 7,3,15,15,12, 12, 3, 4, 4, 1, 1, 10, 14, 13...
线段树 HDU3887 Counting Offspring
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3887 这个题目和 poj3321 apple-tree 属于同一类型的题目 题目大意:求树的叶子中比根的数字小的数 的个数 思路:可以在http://blog.youkuaiyun.com/zssee33/article/details/7927286上面看 #include #include #
Counting Offspring(hdu 3887dfs+树状数组)
You are given a tree, it’s root is p, and the node is numbered from 1 to n. Now define f(i) as the number of nodes whose number is less than i in all the succeeding nodes of node i. Now we need to cal...
HDU3887 Counting Offspring【dfs序】
题意:求一个节点的子树中 比它标号小的节点有几个 思路:从小到大,查询每个点区间已经有几个点被放进去,再放这个点进去 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl
HDU 3887 Counting Offspring
Font Size: ← → Problem Description You are given a tree, it’s root is p, and the node is numbered from 1 to n. Now define f(i) as the number of nodes whose number is less than i in all the succe
430



被折叠的 条评论
为什么被折叠?



