Руби только что получила место стажера на ферме Фермера Джона, победив в соревновании по программированию! В обязанности Руби входит обслуживание персикового дерева Фермера Джона — дерева, состоящего из $$$n$$$ вершин, с корнем в вершине $$$1$$$. В каждой вершине изначально содержится $$$a_i = 0$$$ персиков. Могут происходить два вида событий:
Руби также дан массив $$$b$$$ длины $$$n$$$. Персиковое дерево считается здоровым, если $$$a_i \ge b_i$$$ для каждой вершины $$$i$$$.
Руби предлагается выполнить $$$q$$$ операций двух типов:
Для каждого префикса операций она просит вас определить, может ли она выполнить эти операции в некотором порядке так, чтобы получившееся (после всех этих операций) персиковое дерево было здоровым. Обратите внимание, что Руби не может выполнять событие сбора урожая, которое сделает некоторое $$$a_i$$$ отрицательным.
Каждый префикс операций независим, то есть для данной операции Руби может выбрать разные вершины для выполнения событий на каждом префиксе, содержащем эту операцию.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \le n, q \le 2 \cdot 10^5$$$) — размер дерева и количество операций.
Вторая строка содержит $$$n - 1$$$ целых чисел $$$p_2, p_3, \ldots, p_n$$$ ($$$1 \le p_i < i$$$) — родителей вершин.
Третья строка содержит $$$n$$$ целых чисел $$$b_1, b_2, \ldots, b_n$$$ ($$$0 \le b_i \le 10^6$$$) — минимальное количество персиков, необходимое каждой вершине для того, чтобы персиковое дерево считалось здоровым.
Следующие $$$q$$$ строк описывают операции, которые будет выполнять Руби. Каждая строка содержит три целых числа $$$t$$$, $$$x$$$ и $$$v$$$ ($$$1 \le t \le 2$$$, $$$1 \le x \le n$$$, $$$1 \le v \le 10^6$$$). Если $$$t = 1$$$, это означает, что Руби должна выполнить $$$v$$$ событий роста на вершине $$$x$$$. Если $$$t = 2$$$, это означает, что Руби должна выполнить $$$v$$$ событий урожая на вершине $$$x$$$.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$, и сумма $$$q$$$ по всем наборам не превосходит $$$2 \cdot 10^5$$$.
Для каждого набора входных данных выведите $$$q$$$ строк. Строка $$$i$$$ должна содержать «YES», если Руби может сделать персиковое дерево здоровым после выполнения операций $$$1, 2, \ldots, i$$$ в любом порядке. В противном случае она должна содержать «NO».
Вы можете выводить ответ в любом регистре (верхнем или нижнем). Например, строки «YEs», «Yes», «Yes» и «YES» будут распознаны как положительные ответы.
28 81 1 1 4 3 6 65 6 2 9 8 4 1 31 3 141 4 171 2 72 2 11 6 12 1 10000001 4 9999991 3 110 201 1 1 2 5 2 4 7 2311353 270334 74853 385085 315501 183346 234819 417314 103862 4294371 1 8375411 10 9338761 1 5659581 4 7914552 3 850542 3 4409781 4 9810401 5 685222 1 8583052 4 1843081 4 9050812 8 5196262 2 2690901 1 430162 2 5176441 5 3557921 9 3192412 10 1254472 10 5238901 10 241045
NO NO YES NO YES NO NO YES NO NO NO YES YES NO NO YES YES NO YES YES NO YES NO NO YES YES NO NO
Для префикса, содержащего операции $$$1, 2, \ldots, 5$$$ в первом примере, Руби может выполнять операции в следующем порядке:
Название |
---|