博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
suoi14 子树查找 (dfs)
阅读量:5157 次
发布时间:2019-06-13

本文共 993 字,大约阅读时间需要 3 分钟。

把询问记下来,然后开个桶差分

1 #include
2 #define pa pair
3 #define lowb(x) ((x)&(-(x))) 4 #define REP(i,n0,n) for(i=n0;i<=n;i++) 5 #define PER(i,n0,n) for(i=n;i>=n0;i--) 6 #define MAX(a,b) ((a>b)?a:b) 7 #define MIN(a,b) ((a
'9'){
if(c=='-') neg=-1;c=getchar();}17 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();18 return x*neg;19 }20 21 int N,v[maxn],q[maxn];22 int ch[maxn],hd[maxn];23 int cnt[maxn],ans[maxn];24 25 void dfs(int x,int f){26 int cc=cnt[q[x]];cnt[v[x]]++;27 for(int i=hd[x];i;i=ch[i]){28 if(i==f) continue;29 dfs(i,x);30 }ans[x]=cnt[q[x]]-cc;31 }32 33 int main(){34 //freopen(".in","r",stdin);35 rei i,j,k;36 N=rd();37 for(i=1;i<=N;i++) v[i]=rd(),q[i]=rd();38 for(i=2;i<=N;i++){39 int a=rd();40 ch[i]=hd[a];hd[a]=i;41 }42 dfs(1,0);43 for(i=1;i<=N;i++) printf("%d\n",ans[i]);44 return 0;45 }

 

转载于:https://www.cnblogs.com/Ressed/p/9735449.html

你可能感兴趣的文章
第九周作业·
查看>>
Unity多媒体展示项目经验分享-ImageEffect+动态绑定
查看>>
Java50道经典习题-程序28 排序算法
查看>>
Java基础---String类和基本数据类型包装类
查看>>
[NYOJ 37] 回文字符串
查看>>
C#-表达式树
查看>>
2.想起来的一点基础知识
查看>>
曾经踩过的坑--浏览器兼容-history
查看>>
centos7 Apache 2.4.6 多域名多网站配置
查看>>
MySQL性能优化
查看>>
建造者模式(Builder Pattern)
查看>>
程序开发的艺术
查看>>
对 Unity 碰撞器的相关调研
查看>>
linux 快速清空文件内容
查看>>
centos7安装配置jdk
查看>>
新年新气象
查看>>
webpack入门
查看>>
查看容器的挂载目录
查看>>
分布式系统(Distributed System)资料
查看>>
Android中LocalSocket使用
查看>>