C1676 [Wannafly冬令营2018Day4]两条路径(困难版)

内存限制:1024 MB 时间限制:2000 ms

题目描述

树是一个 $n$ 个点,$n-1$ 条边的连通图。树上的路径指是某两个点间唯一的最短路上点的集合。

现在给定一棵树,树上每个点有一个权值。权值都是整数,且是 $2$ 的幂次,$2$ 的幂次的相反数,或者 $0$。给定一个点 $x$,要求画出两条树上的路径,使得它们的交恰 为$x$,且它们的并中的点的权值和最大。输出这个权值和。

输入格式

第一行一个正整数 $n$ 表示树的边数($n\le 100000$)。接下来一行 $n$ 个整数表示点 $1,2,\ldots,n$ 的权值。正数 $k$ 表示权值为 $2^{k-1}$,负数 $-k$ 表示权值为 $-2^{k-1}$,$0$ 表示权值为 $0$。这一行的数字绝对值不超过 $100000$。接下来 $n-1$ 行,每行两个正整数,表示树的边。接下来一行一个正整数$Q$表示询问个数($Q\le 20$)。接下来$Q$行每行为一个询问,包含一个正整数$x$($1\le x\le n$),代表树上的一个点。

输出

对于每组询问,按顺序输出最大权值和。按照二进制输出。

样例

样例输入 1

5 -5 1 1 1 1 1 2 1 3 1 4 1 5 5 1 2 3 4 5

样例输出 1

-1100 1 1 1 1

提示