QTREE6 - Query on a tree VI

You are given a tree (an acyclic undirected connected graph) with n nodes. The tree nodes are numbered from 1 to n. Each node has a color, white or black. All the nodes are black initially. We will ask you to perform some instructions of the following form:

  • 0 u: ask for how many nodes are connected to u, two nodes are connected if all the node on the path from u to v (inclusive u and v) have the same color.
  • 1 u: toggle the color of u (that is, from black to white, or from white to black).


The first line contains a number n that denotes the number of nodes in the tree (1 ≤ n ≤ 105). In each of the following n-1 lines, there will be two numbers (u, v) that describes an edge of the tree (1 ≤ u, vn). The next line contains a number m denoting number of operations we are going to process (1 ≤ m ≤ 105). Each of the following m lines describe an operation (t, u) as we mentioned above(0 ≤ t ≤ 1, 1 ≤ un).


For each query operation, output the corresponding result.


Input 1:
1 2
1 3
1 4
1 5
0 1
1 1
0 1

Output 1:
5 1
Input 2:
1 2
1 3
2 4
2 5
3 6
3 7
0 1
1 1
0 2
0 3

Output 2:

Warning: large input/output data, be careful with certain languages

hide comments
zer0_h6cks: 2019-12-11 09:11:39

Got AC finally!
Use lightweight segtree implementations like on arrays otherwise it'll exceed TL.
Good problem!

Sigma Kappa: 2017-10-16 23:40:53

Somehow, my solution with Segment Tree with lazy propagation gets WA, but when I replace the segment tree with a trivial array, it gets AC in ~4 secs. I do so wonder is there any bug in my implementation of SegTree? I tested it on many SPOJ problems, shouldn't be. Also tested my solution on a huge set of random cases...

Added by:xiaodao
Time limit:1s-5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:Own problem, CodeChef December Challenge 2013