Poj--3321(DFS序)

2014-10-03 00:44:18

思路:DFS序列处女题,接触了下把树形结构转化为线性结构的思想,时间戳是个好思想。恩恩,就这样,题目挺裸的,再加个树状数组就水过了。

 1 /*************************************************************************
 2     > File Name: 3321.cpp
 3     > Author: Nature
 4     > Mail: 564374850@qq.com
 5     > Created Time: Thu 02 Oct 2014 10:54:46 PM CST
 6 ************************************************************************/
 7 
 8 #include <cstdio>
 9 #include <cstring>
10 #include <cstdlib>
11 #include <cmath>
12 #include <vector>
13 #include <queue>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 #define lp (p << 1)
18 #define rp (p << 1|1)
19 #define getmid(l,r) (l + (r - l) / 2)
20 typedef long long ll;
21 const int INF = 1 << 30;
22 const int maxn = 100010;
23 
24 int N,M;
25 int first[maxn],next[maxn],ver[maxn],ecnt;
26 int tot,tin[maxn],tout[maxn],sta[maxn],c[maxn];
27 
28 int Lowbit(int x){return x & (-x);}
29 void Update(int x,int d){while(x <= N){c[x] += d;x += Lowbit(x);}}
30 int Getsum(int x){int res = 0;while(x){res += c[x];x -= Lowbit(x);}return res;}
31 
32 void Add(int u,int v){
33     next[++ecnt] = first[u];
34     first[u] = ecnt;
35     ver[ecnt] = v;
36 }
37 
38 void Dfs(int p){
39     tin[p] = ++tot;
40     for(int i = first[p]; i; i = next[i])
41         Dfs(ver[i]);
42     tout[p] = tot;
43 }
44 
45 int main(){
46     int u,v,q;
47     char s[5];
48     scanf("%d",&N);
49     for(int i = 1; i <= N - 1; ++i){
50         scanf("%d%d",&u,&v);
51         Add(u,v);
52     }
53     Dfs(1);
54     for(int i = 1; i <= N; ++i){
55         sta[i] = 1;
56         Update(tin[i],1);
57     }
58     scanf("%d",&M);
59     for(int i = 1; i <= M; ++i){
60         scanf("%s%d",s,&q);
61         if(s[0] == 'C'){
62             if(sta[q]) Update(tin[q],-1);
63             else Update(tin[q],1);
64             sta[q] = 1 - sta[q];
65         }
66         else{
67             printf("%d\n",Getsum(tout[q]) - Getsum(tin[q] - 1));
68         }
69     }
70     return 0;
71 }

 

posted @ 2014-10-03 00:47  Naturain  阅读(94)  评论(0)    收藏  举报