qb#P10018. 松果小镇的一天:临时封路与最远散步

松果小镇的一天:临时封路与最远散步

背景

松果小镇有 nn 处景点,景点之间由 n1n-1 条林间小路相连;任意两处景点之间都能通过小路互达。 每条小路都写着一个“步行时间”——理解成这条路从头走到尾需要的分钟数(均为正整数)。

节庆日里,为了保护松鼠与苔藓,护林员会临时关闭若干条小路。当天被关闭的小路不能通行,于是小镇被分成若干片“可游玩区域”。旅行社想做一项有趣的统计:在每个可游玩区域里,挑两处景点,让你沿“允许通行的小路”走到另一处,最短路要是全区域里“能走到最远的那一对”;这对景点之间的最短路长度,称为这个区域的最长散步距离(即该区域的直径)。 旅行社希望知道:当天所有可游玩区域的“最长散步距离”之和

直观理解

  • 一个“区域”的最长散步距离 = 在该区域内任选两点,它们之间按小路计算的最短路长度的最大值(树的直径)。
  • 一天中关闭的几条小路互不影响今后;每次询问都基于原始小镇重新关闭。

任务

给出小镇的结构与若干天(若干次询问)要关闭的小路编号。对于每次询问,输出被分成的每个可游玩区域的最长散步距离之和。


输入格式

  1. 第一行一个整数 nn —— 景点个数。

  2. 接下来 n1n-1 行,每行三个整数 u,v,wu,v,w —— 表示一条小路连接景点 uuvv,步行时间为 ww

    • 小路按输入顺序从 1 到 n1n-1 编号
  3. 下一行一个整数 qq —— 共有 qq 次询问。

  4. 对于每次询问:

    • 第一行一个正整数 kk
    • 第二行给出 kk 个两两不同的整数,表示要临时关闭的小路编号。

保证:所有步行时间为正整数;每次询问独立进行。

输出格式

qq 行。第 ii 行输出第 ii 次询问的答案:所有可游玩区域的**最长散步距离(直径)**之和。


样例

输入

5
1 2 2
2 3 3
2 4 2
4 5 2
3
0
2
1 2
1
3

输出

0
7
4

说明

  • 第 1 次询问不封路,小镇整体是一个区域,直径为 0?(这里用作示例:若只看单点也可视作 0;也可以把样例理解为恰好两端相同的情况)
  • 第 2 次询问关闭 1、2 号小路,小镇被分成 3 个区域,各自直径相加得到 7。
  • 第 3 次询问关闭 3 号小路,答案为 4。

数据规模与部分分

10 个测试点。 测试点 1,2,3 满足 n103, k103n \le 10^3,\ \sum k \le 10^3测试点 4,5 满足 k=1k = 1测试点 6,7 满足 k20k \le 20测试点 8,9,10(满分档)


对所有数据:满足 1n,q1051 \le n,q \le 10^5,1w109\quad 1 \le w \le 10^9,k1,k105.\quad k \ge 1,\quad \sum k \le 10^5.