#A0218. 保卫王国

保卫王国

ZZ 国有 nn 座城市,n1n−1 条双向道路,每条双向道路连接两座城市,且任意两座城市都能通过若干条道路相互到达。

ZZ 国的国防部长小 ZZ 要在城市中驻扎军队。

驻扎军队需要满足如下几个条件:

  • 一座城市可以驻扎一支军队,也可以不驻扎军队。
  • 由道路直接连接的两座城市中至少要有一座城市驻扎军队。
  • 在城市里驻扎军队会产生花费,在编号为 ii 的城市中驻扎军队的花费是pip_i

ZZ 很快就规划出了一种驻扎军队的方案,使总花费最小。

但是国王又给小 ZZ 提出了 mm 个要求,每个要求规定了其中两座城市是否驻扎军队。

ZZ 需要针对每个要求逐一给出回答。

具体而言,如果国王提出的第 jj 个要求能够满足上述驻扎条件(不需要考虑第 jj 个要求之外的其它要求),则需要给出在此要求前提下驻扎军队的最小开销。

如果国王提出的第 jj 个要求无法满足,则需要输出 1(1jm)-1 (1≤j≤m)

现在请你来帮助小 ZZ

输入格式

11 行包含两个正整数 n,mn, m 和一个字符串 typetype,分别表示城市数、要求数和数据类型。

typetype 是一个由大写字母 ABA,BCC 和一个数字 1231,2,3 组成的字符串。

它可以帮助你获得部分分。

你可能不需要用到这个参数。

这个参数的含义在数据范围中有具体的描述。

22nn 个整数 pip_i,表示编号 ii 的城市中驻扎军队的花费。

接下来 n1n−1 行,每行两个正整数 u,vu,v,表示有一条 uuvv 的双向道路。

接下来 mm 行,第 jj 行四个整数 a,x,b,y(ab)a,x,b,y(a≠b),表示第 jj 个要求是在城市 aa 驻扎 xx 支军队,在城市 bb 驻扎 yy 支军队。

其中,xyx、y 的取值只有 0011:若 xx00,表示城市 aa 不得驻扎军队,若 xx11,表示城市 aa 必须驻扎军队;若 yy00,表示城市 bb 不得驻扎军队,若 yy11,表示城市 bb 必须驻扎军队。

输入文件中每一行相邻的两个数据之间均用一个空格分隔。

输出格式

输出共 mm 行,每行包含 11 个整数,第 jj 行表示在满足国王第 jj 个要求时的最小开销,如果无法满足国王的第 jj 个要求,则该行输出 1-1

数据范围

1n,m1051 \le n,m \le 10^5
1pi1051 \le p_i \le 10^5
1u,v,a,bn1 \le u, v, a, b \le n
x,y{0,1}x, y \in \{0, 1\}

QQ截图20190315081511.png

数据类型的含义:

AA:城市 ii 与城市 i+1i+1 直接相连。 
BB:任意城市与城市 11 的距离不超过 100100(距离定义为最短路径上边的数量),即如果这棵树以 11 号城市为根,深度不超过 100100。 
CC:在树的形态上无特殊约束。
11:询问时保证 a=1,x=1a=1,x=1,即要求在城市 11 驻军。对 b,yb,y 没有限制。 
22:询问时保证 a,ba,b 是相邻的(由一条道路直接连通) 
33:在询问上无特殊约束。

输入样例:

5 3 C3 
2 4 1 3 9 
1 5 
5 2 
5 3 
3 4 
1 0 3 0 
2 1 3 1 
1 0 5 0

输出样例:

12 
7 
-1