树上的单点修改+子树查询

用dfn[u]和num[u]可以把任意子树表示成一段连续区间,此时结合树状数组就好了

#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=(int)1e5+;
const int MAXM=(int)2e5+;
int a[MAXN],n,m;char s[];
int lb(int i){return i&-i;}//lowbit
void add(int i,int v){for(;i<=n;a[i]+=v,i+=lb(i));}
int sum(int i){int ans=;for(;i;ans+=a[i],i-=lb(i));return ans;}
int query(int i,int j){return sum(j)-sum(i-);} struct node{int v,next;}edge[MAXM];
int head[MAXN],cnt;
void addedge(int u,int v){edge[++cnt].v=v,edge[cnt].next=head[u],head[u]=cnt;}
void Addedge(int u,int v){addedge(u,v),addedge(v,u);} int dfn[MAXN],num[MAXN],index;
void dfs(int u,int fa){
dfn[u]=++index;
for(int i=head[u];i;i=edge[i].next){
int v=edge[i].v;
if(v!=fa)num[u]++,dfs(v,u),num[u]+=num[v];
}
} void Order_C(int x){query(dfn[x],dfn[x])?add(dfn[x],-):add(dfn[x],);}
void Order_Q(int x){printf("%d\n",query(dfn[x],dfn[x]+num[x]));} int main() {
scanf("%d",&n);
for(int i=,u,v;i<n;i++)scanf("%d%d",&u,&v),Addedge(u,v);
dfs(,),scanf("%d",&m);
for(int i=;i<=n;i++)add(i,);
for(int i=,x;i<=m;i++)scanf("%s%d",s,&x),s[]=='C'?Order_C(x):Order_Q(x);
return ;
}

最新文章

  1. 读《乔布斯的NeXT和苹果之间,隔了这两个创业常识》
  2. Thinkphp 带查询条件数据分页
  3. Centos 6.7 安装smokeping (最完整教程)
  4. 7、C#基础整理(类)
  5. NeHe OpenGL教程 第三十八课:资源文件
  6. wireshark: there are no interfaces on which a capture can be done
  7. (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)
  8. 将json转化为model
  9. 小米1S iptables禁止443端口
  10. office web apps部署(二)
  11. 笔记:Ubuntu 上的Testlink 部署
  12. 5个Android开发中比较常见的内存泄漏问题及解决办法
  13. HTML标签自定义属性
  14. Yii的数组助手类
  15. win10安装mongodb及配置 和 mongodb的基本使用(node环境)
  16. 如何卸载Centos自带jdk
  17. cocos creator主程入门教程(六)—— 消息分发
  18. Js中常用知识点(typeof、instanceof、动态属性、变量作用域)
  19. CentOS 离线安装 MYSQL+APACHE+PHP
  20. alpha冲刺(4/10)

热门文章

  1. DataReader类型化数据读取与装箱性能研究
  2. linux 文件系统管理三部曲之三:挂载文件系统
  3. Spark学习之路 (十九)SparkSQL的自定义函数UDF[转]
  4. PUT方法写shell
  5. java中数据类型转换注意事项
  6. mysql之数据初始化update操作
  7. HBase Hive
  8. react-native构建基本页面6---打包发布
  9. Windows2008r2、正版安装包
  10. python 方法和函数