Codeforces Round 232 (Div. 1) |
---|
Закончено |
Дано корневое дерево, состоящее из n вершин, пронумерованных от 1 до n. Корень дерева находится в вершине с номером 1.
Изначально во всех вершинах записано число 0. Далее приходят q запросов, каждый из которых имеет один из следующих двух видов:
Выполните заданные во входных данных запросы.
В первой строке задано целое число n (1 ≤ n ≤ 3·105) — количество вершин в дереве. Во второй строке задано n - 1 целое число p2, p3, ... pn (1 ≤ pi < i), где pi — это номер вершины, являющейся предком вершины i в дереве.
В третьей строке записано целое число q (1 ≤ q ≤ 3·105) — количество запросов. В следующих q строках заданы запросы, по одному на строке. Первое число в строке type означает тип запроса. Если type = 1, то далее заданы целые числа v, x, k (1 ≤ v ≤ n; 0 ≤ x < 109 + 7; 0 ≤ k < 109 + 7) через пробел. Если type = 2, то далее задано целое число v (1 ≤ v ≤ n) — вершина, в которой нужно узнать значение числа.
Для каждого запроса второго типа на отдельной строке выведите число, записанное в вершине, обозначенной в запросе, по модулю 1000000007 (109 + 7).
3
1 1
3
1 1 2 1
2 1
2 2
2
1
О корневом дереве можно прочитать здесь: http://ru.wikipedia.org/wiki/Дерево_(теория_графов).
Название |
---|