Problem C: 树

Time Limit: 2 Sec Memory Limit: 256 MB

Description

给定一棵树,树节点编号为 0~N-1 的,根的节点编号为 0,每个节点有初始颜色 c 和权值 v,现在有三种操作:
1.Change u x y,表示将 u 的子树中颜色为 x 和 y 的节点颜色反转,即将 x 颜色的的节点换成 y 颜色,将 y 颜色的节点换成 x 颜色。数据保证 x 与 y 不相等。
2.Ask u v c,表示询问 u 到 v 的路径上,颜色为 c 的节点的权值之和。
3.Set u c val,表示将节点 u 的颜色设置为 c,权值设置为 val。

Input

第一行有一个整数 N,表示树的节点数。
第二行有 N 个整数 c_i,表示每个节点的颜色。
第三行有 N 个整数 v_i,表示每个节点的权值。
接下来 N-1 行,每行两个整数 x 和 y,表示 x 和 y 有一条直接连边。
接下来一行有一个整数 M,表示操作数。
接下来 M 行,每行输入格式参照问题描述。
 

Output

对于每一次询问,输出一行。
 

Sample Input

样例1
3
0 1 2
0 1 2
0 1
0 2
4
Ask 1 2 0
Change 0 1 2
Set 0 1 98
Ask 1 2 1

样例2
3
0 1 2
0 1 2
0 1
0 2
4
Ask 1 2 1
Change 0 1 2
Set 0 1 98
Ask 1 2 2

Sample Output

样例1
0
100

样例2
1
1

HINT

对于 20%数据,N<=1000, M<=1000
对于 50%数据,N<=10000, M<=10000, 0<=c_i<2, 0<=xy<2, 0<=c<2
对于 100%数据,N<=50000, M<=50000, 0<=c_i<10, |v_i|<=10000, 0<=uv
 
大样例下载