A15667 | Li Hua and Tree
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Li Hua has a tree of $n$ vertices and $n-1$ edges. The root of the tree is vertex $1$ . Each vertex $i$ has importance $a_i$ . Denote the size of a subtree as the number of vertices in it, and the importance as the sum of the importance of vertices in it. Denote the heavy son of a non-leaf vertex as the son with the largest subtree size. If multiple of them exist, the heavy son is the one with the minimum index.
Li Hua wants to perform $m$ operations:
- "1 $x$ " ( $1\leq x \leq n$ ) — calculate the importance of the subtree whose root is $x$ .
- "2 $x$ " ( $2\leq x \leq n$ ) — rotate the heavy son of $x$ up. Formally, denote $son_x$ as the heavy son of $x$ , $fa_x$ as the father of $x$ . He wants to remove the edge between $x$ and $fa_x$ and connect an edge between $son_x$ and $fa_x$ . It is guaranteed that $x$ is not root, but not guaranteed that $x$ is not a leaf. If $x$ is a leaf, please ignore the operation.
Suppose you were Li Hua, please solve this problem.
Li Hua wants to perform $m$ operations:
- "1 $x$ " ( $1\leq x \leq n$ ) — calculate the importance of the subtree whose root is $x$ .
- "2 $x$ " ( $2\leq x \leq n$ ) — rotate the heavy son of $x$ up. Formally, denote $son_x$ as the heavy son of $x$ , $fa_x$ as the father of $x$ . He wants to remove the edge between $x$ and $fa_x$ and connect an edge between $son_x$ and $fa_x$ . It is guaranteed that $x$ is not root, but not guaranteed that $x$ is not a leaf. If $x$ is a leaf, please ignore the operation.
Suppose you were Li Hua, please solve this problem.
输入格式
The first line contains 2 integers $n,m$ ( $2\le n\le 10^{5},1\le m\le 10^{5}$ ) — the number of vertices in the tree and the number of operations.
The second line contains $n$ integers $a_{1},a_{2},\ldots ,a_{n}$ ( $-10^{9}\le a_{i}\le 10^{9}$ ) — the importance of each vertex.
Next $n-1$ lines contain the edges of the tree. The $i$ -th line contains two integers $u_i$ and $v_i$ ( $1\le u_i,v_i\le n$ , $u_i\ne v_i$ ) — the corresponding edge. The given edges form a tree.
Next $m$ lines contain operations — one operation per line. The $j$ -th operation contains two integers $t_{j},x_{j}$ ( $t_{j}\in \{1,2\}$ , $1 \leq x_{j} \leq n$ , $x_{j}\neq 1$ if $t_j = 2$ ) — the $j$ -th operation.
The second line contains $n$ integers $a_{1},a_{2},\ldots ,a_{n}$ ( $-10^{9}\le a_{i}\le 10^{9}$ ) — the importance of each vertex.
Next $n-1$ lines contain the edges of the tree. The $i$ -th line contains two integers $u_i$ and $v_i$ ( $1\le u_i,v_i\le n$ , $u_i\ne v_i$ ) — the corresponding edge. The given edges form a tree.
Next $m$ lines contain operations — one operation per line. The $j$ -th operation contains two integers $t_{j},x_{j}$ ( $t_{j}\in \{1,2\}$ , $1 \leq x_{j} \leq n$ , $x_{j}\neq 1$ if $t_j = 2$ ) — the $j$ -th operation.
输出格式
For each query "1 $x$ ", output the answer in an independent line.
输入输出样例
输入 #1
7 4 1 1 1 1 1 1 1 1 2 1 3 2 4 2 5 3 6 6 7 1 6 2 3 1 6 1 2
输出 #1
2 3 3
输入 #2
10 14 -160016413 -90133231 -671446275 -314847579 -910548234 121155052 -359359950 83112406 -704889624 145489303 1 6 1 10 10 8 1 4 3 4 2 7 2 5 3 2 9 8 1 4 2 2 2 4 1 4 1 10 2 10 1 9 1 6 2 8 2 10 1 5 1 8 1 1 2 5
输出 #2
-2346335269 -314847579 -476287915 -704889624 121155052 -1360041415 228601709 -2861484545
In the first example:
The initial tree is shown in the following picture:
The importance of the subtree of $6$ is $a_6+a_7=2$ .
After rotating the heavy son of $3$ (which is $6$ ) up, the tree is shown in the following picture:
The importance of the subtree of $6$ is $a_6+a_3+a_7=3$ .
The importance of the subtree of $2$ is $a_2+a_4+a_5=3$ .
The initial tree is shown in the following picture:
The importance of the subtree of $6$ is $a_6+a_7=2$ .
After rotating the heavy son of $3$ (which is $6$ ) up, the tree is shown in the following picture:
The importance of the subtree of $6$ is $a_6+a_3+a_7=3$ .
The importance of the subtree of $2$ is $a_2+a_4+a_5=3$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted