Logo
(追記) (追記ここまで)

22085번 - Булево дерево 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB7000.000%

문제

Виталик очень долго думал как решить простенькую задачку, и в процессе придумывания решения нарисовал на доске граф. Этот граф по стечению обстоятельств оказался корневым деревом. В этот момент к доске подошел Боря, и начал записывать в некоторых вершинах дерева выражения, в которых булевым переменным присваивались различные значения.

После этого они ввели правило, по которому для каждой вершины дерева можно определить значение переменной в этой вершине. А именно, если в этой вершине записывалось присваивание этой переменной значения, то используется последнее такое значение. Если таким образом значение определить не удалось, то берется значение этой переменной в ближайшем предке этой вершины, в котором записано присваивание значение этой переменной. Если у вершины нет такого предка, значит значение не определено.

После нескольких операций они захотели посчитать для заданной переменной в скольких листьях дерева значение этой переменной true, в скольких false, а в скольких не определено. И тут они поняли, что это сложно, и что сделать этого они не могут. Поэтому они просят вас помочь им, и после каждого добавления записи о присваивании значения переменной, определять, для скольких листьев значение этой переменной равно true, для скольких false, а для скольких не определено.

입력

В первой строке задано число T — число тестов. Далее идёт описание T тестов.

В первой строке теста даны два натуральных числа n и m (1 ≤ n, m ≤ 105), где n – количество вершин заданного дерева, а m – количество добавлений новых записей о присваивании значения переменной. Во второй строке даны n чисел, где i-е число это номер предка i-й вершины. Для корня это число равно нулю. Гарантируется, что вам дано именно дерево. Далее идут m строк – описания записей. В каждой из этих строк содержатся три числа: v – номер вершины, x – номер переменной и b – ноль либо единица, если значение переменной равно false или true соответственно. Номер переменной – это целое положительное число, не превосходящее 105.

В каждом наборе входных данных сумма всех n и сумма всех m не превышают 105.

출력

Для каждого из тестовых примеров выводите m строк, содержащие по три числа – количество листьев дерева, для которых значение только что написанной переменной равно true, false и не определено, соответственно.

제한

예제 입력 1

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

예제 출력 1

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

힌트

출처

Contest > Russian Code Cup > 2014 > RCC 2014 Final Round E번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /