#P1428. 倒水

倒水

倒水

题目描述

王老师有两个容器(A和B),每个容器里面都有一些水。每分钟把A容器里的一半的水倒入B,同时把一半B中的水倒入A。随着浇注的继续,他发现在任何时间计算A和B中的水量都很容易。但王老师想知道,如果有两个以上的容器,每个容器的水量是如何计算的。现在王老师有n(2<n<=20)容器(编号从1到n)。每一分钟,每个容器都应该把水倒进K个容器中(K可能因容器不同而不同)。然后将水均匀地分成K部分,然后倒入其他K个容器中。现在问题是每个容器在规定的时间内有多少水? 例如,容器1被指定将其水倾倒到容器1 2 3中。然后,在每一分钟内,容器1将把其1/3的水分别倒入容器1、2、3(实际上,1/3被倒回自身,这是游戏规则所允许的)。容器的容量没有上限。

输入

输入有多组测试用例。输入的第一行是一个整数T(1<T<=10),表示有T组数据。

每组测试用例的第一行是一个整数N,表示容器数量。第二行包含N个浮点数,表示每个容器中的初始水量。

接下来的N行描述了一个容器(从1到N)将水倒入其他容器的关系。每一行以整数k(0 <= K <= N)开始。每一个整数([1,N])代表一个容器,该容器应该由当前容器注水。

最后一行是整数m(1<m=1000000000)表示倒水将持续M分钟。

输出

对每组用例输出一行N个数表示每个容器剩余的水量,以空格隔开。精确到小数点后两位

样例输入

1
2
100.00 100.00
1 2
2 1 2
2

样例输出

75.00 125.00