寰宇蝗灾
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

在《崩坏·星穹铁道》的模拟宇宙--寰宇蝗灾中,开拓者探索方式是以位面 + 棋盘移动的形式。共有三个"位面",每个"位面"都有不同的棋盘地图,开拓者需从左往右移动,击败棋盘最右边的位面BOSS才能进入下一个位面,最终击败第三位面的关底BOSS即视为通关。

由于神秘力量影响,探索地图变为了一棵具有n个结点的树形地图。

开拓者在探索中会掷出觐见之骰,觐见之骰可以为部分地区附加"基石"效果。

每秒开始时,地图中所有没有"基石"效果的节点都将塌陷。由于觐见之骰获得了存护星神·克里珀的赐福,每投掷一次觐见之骰,将为与某个节点距离不超过2的所有节点附加"基石"效果,"基石"的效果将持续若干秒。若第s秒某个节点被附加持续t秒的"基石"效果,则"基石"效果在第s+t秒的开始消失,若该节点当前不具有"基石"效果,则该节点会塌陷。

节点被附加"基石"效果时,若持续时间大于节点当前"基石"效果的剩余时间,则该节点的"基石"效果持续时间将被刷新。

探索共持续m秒,开拓者每秒种会进行两类操作:

1\ x\ t,开拓者投掷一次觐见之骰,对与节点x距离不超过2的所有节点(包括x自身)附加持续t秒的"基石"效果。

2\ x,开拓者想知道当前节点x是否已塌陷,若塌陷,输出YES,否则输出NO

在探索开始前(第0秒),每个节点会被琥珀王附加"基石"效果,第i个节点的"基石"效果持续时间为a_i秒。

请注意,塌陷的节点被附加"基石效果"不会产生任何作用。

本题读入量较大,请使用较为快速的读入方式。如果使用cin读入,请关闭同步流,换行请使用\n代替endl。
cin关同步流示例:
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

输入描述:

第一行是一个整数T(1\le T\le 5),表示数据组数。

对于每组数据,第一行是两个整数n(1\le n\le 2*10^5)m(1\le m\le 10^5),表示树形地图的节点个数和探索的持续时间。

接下来n-1行每行两个整数xy,表示节点xy之间有一条边。

接下来一行n个整数,第i个整数a_i(0\le a_i\le 10^9)代表第0秒节点i被附加的"基石"效果的持续时长。

接下来m行每行代表一个操作:

1\ x\ t代表此次投掷觐见之骰的结果是对与节点x(1\le x\le n)距离不超过2的节点(包括x自身)附加持续t(1\le t\le 10^9)秒的"基石"效果。

2\ x代表开拓者想知道当前节点x(1\le x\le n)是否已塌陷,若塌陷,输出YES,否则输出NO

输出描述:

对于每个2操作,若节点x已塌陷,输出YES,否则输出NO
示例1

输入

复制
1
5 6
1 2
2 4
2 3
4 5
1 2 7 3 2
1 1 5
2 1
2 5
2 2
2 4
2 4

输出

复制
YES
YES
NO
NO
YES

说明

第1秒开始,1号点塌陷,然后2,4两个点的基石效果持续时间被刷新,持续到第6秒开始,3号点的基石效果仍持续到第7秒开始。

第2秒开始,5号点塌陷,询问1号点状态,输出YES。

第3秒开始,没有节点塌陷,询问5号点状态,输出YES。

第4秒开始,没有节点塌陷,询问2号点状态,输出NO。

第5秒开始,没有节点塌陷,询问4号点状态,输出NO。

第6秒开始,2,4号点塌陷,询问4号点状态,输出YES。