「CGOI-3」灵气
题目背景
>「地牢中回荡着尖叫声...」
打完世花的 ac 进入地牢刷灵气……
花后地牢十分险恶,ac 想在地牢里搭满单向门。
[![](https://cdn.luogu.com.cn/upload/image_hosting/a1ewte9n.png)](https://www.bilibili.com/video/BV1jf4y1Z7RB)
题目描述
ac 世界里的地牢有 $n$ 个小房间,恰好存在 $n-1$ 条过道,并且每个小房间连通。第 $i$ 个小房间生成的怪在一个时刻**最多只会存在一个**,且**伤害为 $a_i$**。
为了方便刷灵气,ac 在每个过道上建了一个单向门。
每一秒会发生以下几个事件之一:
1. 第 $x$ 个房间生成了一个怪。怪**不会穿墙**,只会顺着单向门方向移动。
2. 第 $x$ 个房间生成的怪被 ac 的仆从干掉了。
3. ac 想要挂机刷怪,于是他希望知道,如果从时刻 1 开始站在房间 $x$ 一直到当前时刻,受到伤害最多的一个时刻所受伤害是多少。
这里定义一个时刻受到伤害为可以走到 ac 所在房间的怪的伤害值总和,“可以走到”定义为可以穿过若干条单向门到达 ac 的房间(若干可以为 $0$)。ac 非常强大,不会中途被怪打死。
当然,ac 所在的位置**不会改变怪的刷新**和**仆从的行为**。
#### 简化版题面
一棵树,每个点有个点权,每条边有个方向。
有个集合,一开始为空,三个操作:
1. 在集合中加入一个点。
2. 删除集合中的一个点。
3. 给出一个点 $x$,询问集合中满足可以走到 $x$ 的点的点权之和的历史最大值。
输入输出格式
输入格式
第一行,两个整数 $n,m$,分别表示房间个数和事件个数。
接下来一行,共 $n$ 个整数,第 $i$ 个数表示 $i$ 房间中怪的伤害 $a_i$。
接下来 $n-1$ 行,每行两个整数 $x,y$,表示 $x$ 与 $y$ 有一条过道,单向门方向为 $x\rightarrow y$ 。
接下来 $m$ 行,第 $i$ 行两个整数 $fl,x$,表示第 $x$ 号房间发生了 $fl$ 号事件。
对于 $fl=1$ 的操作,保证 $x$ 号房间没有怪。
对于 $fl=2$ 的操作,保证 $x$ 号房间有怪。
输出格式
对每一个 $fl=3$ 的事件,输出一个整数表示答案,并用换行隔开。
输入输出样例
输入样例 #1
5 7
1 2 3 4 5
1 2
3 1
4 3
3 5
1 4
3 1
2 4
1 3
1 5
3 1
3 5
输出样例 #1
4
4
8
输入样例 #2
8 7
4 1 3 5 8 6 2 9
1 2
3 1
4 2
5 1
5 6
7 5
6 8
1 1
1 5
3 7
3 1
1 2
2 5
3 5
输出样例 #2
0
12
8
说明
#### 样例一说明
第一个询问中,时刻 $1$ 存在怪的房间为 $\{4\}$,$4$ 号房间的怪可以走到 $1$ 号房间,因此答案为 $a_4=4$。
第二个询问中,受到伤害最大的时刻为时刻 $1$,答案为 $a_4=4$。其中时刻 $5$ 存在怪的房间为 $\{3,5\}$,而 $5$ 号房间的怪走不到 $1$ 号房间,因此此时刻受到伤害为 $a_3=3<4$,不是最大值。
第三个询问中,受到伤害最大的时刻为时刻 $5$,$3,5$ 号房间的怪均可走到 $5$,因此答案为 $a_3+a_5=8$。
---
#### 数据范围
**「本题采用捆绑测试」**
对于 $10\%$ 的数据,$n,m \leq 2000$。
对于另 $10\%$ 的数据,过道 $(x,y)$ 单向门满足 $x<y$。
对于另 $30\%$ 的数据,不存在 2 事件。
对于 $100\%$ 的数据,$1\leq n,m \leq 2\times 10^5$,$1\leq a_i\leq10^4$。
~~但是地牢幽魂就是穿墙怪()()()~~
~~不会真的有人会在地牢里搭满单向门吧。~~