Lotus and Islands

Accepts: 1
Submissions: 5
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
Lotus的世界有$n$座岛屿,每座岛屿有一个概率值$p_i$和一个包含若干其它岛屿的友好列表。
Lotus首先来到了1号岛屿,她会依次执行下面操作:
1、设当前在岛屿$x$,有$p_x$的概率产生一条无向边连接两个随机岛屿,这两个岛屿不会相同,也不会已经有边相连。(即在尚不存在的无向边中随机一条加入图中,不会加自环)
2、如果此时所有岛屿连通,Lotus会心满意足地离开。
3、否则她会在当前点的友好列表中,随机选择一个,走到那座岛屿上。她的不满意度会+1,并重复第1步。
Lotus想让你求出她不满意度的期望值。
为了防止精度误差,题目给出的概率值以及所求的答案都是在模$10^9+7$域下的,即设答案是$\frac{a}{b}$,设$b$的逆元是$x$,你需要输出$ax mod 10^9+7$的值。
输入描述
第一行是数据组数$T(0 \leq T \leq 10)$。
对于每组数据:
第一行一个整数$n(1 \leq n \leq 30)$,第二行$n$个正整数,表示$p_i$在模域下的值$(0 \leq p_i <10^9+7)$。接下去$n$行,每行第一个数$x(1 \leq x \leq n-1)$,接下来$x$个数,描述这个岛屿的友好列表。保证一个岛屿友好列表内没有相同岛屿,也没有自己。
输出描述
对于每组数据,输出一行一个整数,表示答案在模$10^9+7$域下的值。
输入样例
1
2
500000004 1
1 2
1 1
输出样例
500000004