# poj 3321 Apple Tree

（轮这个题的坑
（1. 数据范围绝对不止1e5,我开到了1e6才能过，而且数组开小了返回的还是TLE。。。。迷
（2. 这个题卡vector，用vector的可以改用一发其他的姿势了（比如前向星

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;

const int maxn = 1123456;

struct Edge{
int next,to;
}edge[maxn];

void init(int n){
top=0;
}

edge[top].to=ed;
}

int siz[maxn],sid[maxn];
int _cnt;

void dfs(int st,int fa){
siz[st]=1,sid[st]=_cnt++;
int x = edge[i].to;
if(x!=fa){
dfs(x,st);
siz[st]+=siz[x];
}
}
}

void tinit(){
_cnt=1;
dfs(1,0);
}

int sum[maxn],hav[maxn];

void bitinit(){
memset(sum,0,sizeof(sum));
memset(hav,0,sizeof(hav));
}

int lowbit(int x){
return x&(-x);
}

while(x<=n){
sum[x]+=d;
x+=lowbit(x);
}
}

int que(int x){
int ret = 0;
while(x>0){
ret += sum[x];
x-=lowbit(x);
}
return ret;
}

void update(int x,int n){
int d = hav[x]?-1:1;
hav[x] = d==1;
}

int query(int x){
int val = que(siz[x]+sid[x]-1);
val-=que(sid[x]-1);
return siz[x]-val;
}

int main(){
int n;
while(~scanf("%d",&n)){
int x,y;
init(n);
for(int i=1;i<n;i++){
scanf("%d %d",&x,&y);
}
tinit();
bitinit();
//        for(int i=1;i<=n;i++)
//            printf(i<n?"%d ":"%d\n",sid[i]);
//        for(int i=1;i<=n;i++)
//            printf(i<n?"%d ":"%d\n",siz[i]);
int m;
char ord[10];
scanf("%d",&m);
while(m--){
scanf("%s %d",ord,&x);
if(ord[0]=='C')
update(x,n);
else
printf("%d\n",query(x));
}
}
return 0;
}


• 本文已收录于以下专栏：

## 【树状数组--dfs序转化】poj3321 Apple Tree

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29822   Accepted: 8881...

## poj 3321 Apple Tree（dfs染色+树状数组）

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27212   Ac...

## POJ 3321 Apple Tree（DFS序+线段树单点修改区间查询）

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25904   Accepted: 7682...

## poj 3321Apple Tree 树状数组

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19178   Ac...

## POJ3321:Apple Tree(树状数组)

Description There is an apple tree outside of kaka's house. Every autumn, a lot of apples will gr...

## Apple Tree_poj3321_树状数组&dfs

Description There is an apple tree outside of kaka'shouse. Every autumn, a lot of apples will grow i...
• jpwang8
• 2016年05月23日 20:54
• 309

## poj 3321 Apple Tree( 树状数组 )

举报原因： 您举报文章：poj 3321 Apple Tree 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)