Baby Ming and Matrix tree

Accepts: 3
Submissions: 12
Time Limit: 10000/5000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
规定一个$2*2$的$01$矩阵A,能够进行如下$2$种变换:
旋转变换:做顺时针旋转,把$A(i, j)$移动到$A(j,1- i)$
替换:把矩阵$A$替换成$B$
给出$1$棵树,每一个树的节点上,有一个矩阵$A_i$,铭宝宝喜欢在树上玩矩阵的游戏。每一次在树上选择$2$个节点$a, b$,通过上述$2$种变换,把$a$到$b$路径上的矩阵,全部变成$B$矩阵。
假设旋转变换每次需要$2$秒,替换每次需要$10$秒。铭宝宝想知道,每一次操作所需要的最少时间是多少。
输入描述
输入一个正整数$T$,表示测试组数
每组数据,输入一个正整数$n$,表示树有$n$个节点
输入$n-1$行,每行$2$个正整数$a, b$,表示$a, b$之间连有一条边
接下去输入$2*n$行,每行$2$个数,表示$n$个$2*2$的矩阵$A_i$
输入一个正整数$q$表示询问组数
每组询问,第一行输入$2$个正整数$a, b$
第二、三行输入一个$2*2$的$01$矩阵$B$,表示选择$a,b$两个点,把$a$到$b$路径上的矩阵都变换成矩阵$B$

($A_i, B$的矩阵由$2$个$0$和$2$个$1$组成)

$1 \leq T \leq 30, 1 < n \leq 20000, 1 \leq q \leq 20000, 1 \leq a, b \leq n$ 
输出描述
对于每一个$Q$操作,输出$1$行,表示变换所需要的最小时间。
输入样例
1
5
3 4
1 2
2 5
1 4
0 0
1 1
0 1
1 0
1 1
0 0
0 1
0 1
1 0
0 1
3
1 5
0 1
1 0
2 3
0 1
0 1
1 2
0 0
1 1
输出样例
12
22
4