#1281. 2.删边操作

2.删边操作

当前没有测试数据。

2.删边操作

题目描述

给定一颗nn个点的带点权树,每次删去一条尚未被删去的边,直到得到一个包含nn棵只有一个点的树的森林。定义一条简单路径的权值为路径上点权之和,一棵树的直径为树上权值最大的简单路径。求任一时刻他拥有的所有树的直径权值的乘积。因为这个数可能很大,他要求你输出乘积对109+710^{9}+7取模之后的结果。

输入格式

输入的第一行包含一个整数nn,表示树TT上顶点的数量。

下一行包含nn个空格分隔的整数,表示顶点的权值。

之后的n1n-1行中,每一行包含两个用空格分隔的整数,表示节点和节点之间连有一条边,编号为ii

再之后n1n-1行中,每一行包含一个整数,表示在第jj天里会被删除的边的编号。

输出格式

输出包括nn行。

在第ii行,输出删除i1i-1条边之后,所有树直径的乘积对109+710^{9}+7取模的结果。

数据范围与提示

  • 对于30%30\%的数据,nnm103m \leq 10^{3}
  • 对于100%100\%的数据,1n,m1051 \leq n,m \leq 10^{5},每个节点的编号都不超过10510^{5}

样例

3
1 2 3
1 2
1 3
2
1
6
9
6

说明

初始,树的直径权值为66(由节点22,1133构成的路径)。

在第一天之后,得到了两棵直径权值都为33的树。

第二天之后,得到了三棵直径权值分别为11,22,33的树,乘积为66