题目描述
给定N个点 M条边的带权无向图,每个点有颜色:黑或者白。
有Q个操作,每个操作是下面其中一种:
1 X:表示把 x节点的颜色取反(黑变成白,白变成黑);
2 A B:查询两端的颜色分别是 A和 B(A/B取值为0/1,代表 黑/白)的边的权值之和。
输入格式
第一行一个数T,表示T组数据。
每组数据第一行两个数N和 M。
接下来一行有N个数,Ai=0表示第i个点初始是黑色,否则是白色。
接下来 M行,每行三个数,表示 ui和 vi有一条边,权值为 wi。
接下来一行是Q。
接下来 Q行,分别是 "1 X" 或者 "2 A B" 的形式。
输出格式
对于每个"询问 2",输出一行,表示两端点恰好和指定的"A/B"一致的边的权值和。
样例
输入样例
2
4 3
0 0 0 0
1 2 1
2 3 2
3 4 3
4
2 0 0
1 2
2 0 0
2 0 1
4 3
0 1 0 0
1 2 1
2 3 2
3 4 3
4
2 0 0
1 3
2 0 0
2 0 1
输出样例
6
3
3
3
0
4
提示
对于 10%的数据,M=N−1,原图恰好是一棵树的形式;
对于另外 10%的数据,N=30000,M=100000,图是完全随机构造的;
对于100%的数据,T<=10,1<=N,M,Q<=100000。