#P2000. 单(single)

单(single)

【题目描述】

单车联通大街小巷.这就是出题人没有写题目背景的原因.对于一棵树,认为每条边长度为1,每个点有一个权值a[i]。dis(u,v)为点u到v的最短路径的边数.dis(u,u)=0。对每个点求出一个重要程度。点x的重要程度b[x]定义为其他点到这个点的距离乘上对应的点权再求和。 即:b[x]=a[1]*dis(1,x)+a[2]*dis(2,x)+....+a[n]*dis(n,x)

现在有很多树和对应的a数组,并求出了b数组。不幸的是,记录变得模糊不清了。幸运的是,树的形态完好地保存了下来,a数组和b数组至少有一个是完好无损的,但另一个数组完全看不清了。

希望你求出受损的数组.多组数据。

【输入格式】

第一行输入一个T,表示数据组数。接下来T组数据。

每组数据的第1行1个整数n表示树的点数.节点从1到n编号.

接下来n-1行每行两个整数u,v表示u和v之间有一条边.

接下来一行一个整数t,表示接下来数组的类型。

t=0则下一行是a数组,t=1则下一行是b数组。

接下来一行n个整数,表示保存完好的那个数组,第i个数表示a[i]或b[i]。

【输出格式】

T行,每组数据输出一行表示对应的a数组或b数组,数组的相邻元素用一个空格隔开。忽略行末空格和行尾回车.

【样例输入】

2
2
1 2
1
17 31
2
1 2
0
31 17

【样例输出】

31 17
17 31

【数据范围】

对于100%的数据,T=5, 2<=n<=100000,1<=u,v<=n,保证给出的n-1条边形成一棵树

对于100%的数据,t=0或t=1,1<=a[i]<=100,1<=b[i]<=10^9,t=1时保证给出的b数组对应唯一的一个a数组。

对于100%的数据,单个输入文件不会包含超过2000000个整数,这段话可以理解为,你不必考虑输入输出对程序运行时间的影响。

对于100%的数据,保证答案不会超过int能表示的范围

接下来的表格中描述了每个测试点的具体特征。每个测试点的5组数据均符合表格中对应的特征。

测试点编号 n 特殊限制
1 <=1000 均有t=0
2 <=5 均有t=1,答案中a[i]<=20
3 <=100 均有t=1
4
5 <=30000 所有边满足v=u+1
6 <=10^5 均有t=0
7
8 无特殊限制
9
10