测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A5647. 「一本通 4.4 例 3」异象石

编程题 省选/NOI-

题目描述

**原题来自:[Contest Hunter Round #56](http://noi-test.zzstep.com/contest/CH%20Round%20%2356%20-%20%E5%9B%BD%E5%BA%86%E8%8A%82%E6%AC%A2%E4%B9%90%E8%B5%9B/%E5%BC%82%E8%B1%A1%E7%9F%B3)**

在 Adera 的异时空中有一张地图。这张地图上有 $N$ 个点,有 $N-1$ 条双向边把它们连通起来。起初地图上没有任何异象石,在接下来的 $M$ 个时刻中,每个时刻会发生以下三种类型的事件之一:
1. 地图的某个点上出现了异象石(已经出现的不会再次出现);
2. 地图某个点上的异象石被摧毁(不会摧毁没有异象石的点);
3. 向玩家询问使所有异象石所在的点连通的边集的总长度最小是多少。

请你作为玩家回答这些问题。下图是一个例子,灰色节点表示出现了异象石,加粗的边表示被选为连通异象石的边集。

![stone.png](/uploads/acgo/image/30a3f025696d68fd_96b463931ac7.png)

输入格式

第一行有一个整数 $N$,表示点的个数;

接下来 $N-1$ 行每行三个整数 $x,y,z$,表示点 $x$ 和 $y$ 之间有一条长度为 $z$ 的双向边;

第 $N+1$ 行有一个正整数 $M$;

接下来 $M$ 行每行是一个事件,事件是以下三种格式之一:
+ + x:表示点 $x$ 上出现了异象石;
+ - x:表示点 $x$ 上的异象石被摧毁;
+ ?:表示询问使当前所有异象石所在的点连通所需的边集的总长度最小是多少。

输出格式

对于每个 ? 事件,输出一个整数表示答案。

输入输出样例

输入 #1
6
1 2 1
1 3 5
4 1 7
4 5 3
6 4 2
10
+ 3
+ 1
?
+ 6
?
+ 5
?
- 6
- 3
?
输出 #1
5
14
17
10

说明/提示

~~对于 $30\%$ 的数据,$1\le  n, m \le 10^3$;~~

~~对于另 $20\%$ 的数据,地图是一条链,或者一朵菊花;~~

对于 $100\%$ 的数据,$1\le n, m \le 10^5, 1 \le x, y \le n, x \not = y, 1 \le z \le 10^9$。
上一题 去做题 下一题