QOJ.ac

QOJ

时间限制: 3 s 内存限制: 512 MB 总分: 100

#18816. Дерево и запросы 13

统计

$N$ вершин корневого дерева. Вершины пронумерованы от 1 до $N$. Вершина $i$ имеет вес $A_i$. Изначально корнем является вершина $r$.

Напишите программу, выполняющую следующие запросы:

  • 0 x y: заменить вес всех вершин в поддереве $x$ на $y$.
  • 1 r: изменить корень дерева на $r$.
  • 2 x y z: заменить вес всех вершин на пути между $x$ и $y$ на $z$.
  • 3 x: вывести минимальный вес среди вершин в поддереве $x$.
  • 4 x: вывести максимальный вес среди вершин в поддереве $x$.
  • 5 x y: прибавить $y$ к весу всех вершин в поддереве $x$.
  • 6 x y z: прибавить $z$ к весу всех вершин на пути между $x$ и $y$.
  • 7 x y: вывести минимальный вес среди вершин на пути между $x$ и $y$.
  • 8 x y: вывести максимальный вес среди вершин на пути между $x$ и $y$.
  • 9 x y: заменить родителя вершины $x$ на $y$. Если вершина $y$ находится в поддереве $x$, то проигнорировать этот запрос.
  • 10 x y: вывести сумму весов вершин на пути между $x$ и $y$.
  • 11 x: вывести сумму весов вершин в поддереве $x$.

Входные данные

В первой строке даны два целых числа $N$, $M$ ($1 \le N, M \le 10^5$).

Далее следуют $N-1$ строк, каждая содержит два целых числа $u, v$ — номера вершин, соединённых ребром ($1 \le u, v \le N$).

Далее следуют $N$ строк, $i$-я строка содержит вес $A_i$ вершины $i$.

Далее дано целое число $r$ — номер изначального корня ($1 \le r \le N$).

Далее следуют $M$ строк, каждая содержит один запрос, описанный выше.

Все целые числа, данные на входе, представимы типом int в C++. Гарантируется, что в процессе выполнения запросов сумма весов всех вершин не выходит за пределы диапазона int.

Выходные данные

Для каждого запроса, требующего вывода, выведите результат на отдельной строке в порядке появления запросов.

Примеры

Пример ввода 1

5 5
2 1
3 1
4 1
5 2
4
1
4
1
2
1
10 2 3
3 1
7 3 4
6 3 3 2
9 5 1

Пример вывода 1

9
1
1

Пример ввода 2

10 12
2 1
3 2
4 2
5 3
6 4
7 5
8 2
9 4
10 9
791
868
505
658
860
623
393
717
410
173
4
0 8 800
1 4
2 8 2 103
3 9
4 4
5 7 304
6 8 8 410
7 10 8
8 1 8
9 6 9
10 2 3
11 5

Пример вывода 2

173
860
103
791
608
1557

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.