Codeforces Round #225 (Div. 1)C(dfs+线段树)
来源:互联网 发布:数据库审计产品资料 编辑:程序博客网 时间:2024/06/01 15:35
Iahub likes trees very much. Recently he discovered an interesting tree named propagating tree. The tree consists of n nodes numbered from 1 to n, each node i having an initial value ai. The root of the tree is node 1.
This tree has a special property: when a value val is added to a value of node i, the value -val is added to values of all the children of node i. Note that when you add value -val to a child of node i, you also add -(-val) to all children of the child of node i and so on. Look an example explanation to understand better how it works.
This tree supports two types of queries:
- "1 x val" — val is added to the value of node x;
- "2 x" — print the current value of node x.
In order to help Iahub understand the tree better, you must answer m queries of the preceding type.
The first line contains two integers n and m (1 ≤ n, m ≤ 200000). The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 1000). Each of the next n–1 lines contains two integers vi and ui (1 ≤ vi, ui ≤ n), meaning that there is an edge between nodes vi and ui.
Each of the next m lines contains a query in the format described above. It is guaranteed that the following constraints hold for all queries: 1 ≤ x ≤ n, 1 ≤ val ≤ 1000.
For each query of type two (print the value of node x) you must print the answer to the query on a separate line. The queries must be answered in the order given in the input.
5 51 2 1 1 21 21 32 42 51 2 31 1 22 12 22 4
330
The values of the nodes are [1, 2, 1, 1, 2] at the beginning.
Then value 3 is added to node 2. It propagates and value -3 is added to it's sons, node 4 and node 5. Then it cannot propagate any more. So the values of the nodes are [1, 5, 1, - 2, - 1].
Then value 2 is added to node 1. It propagates and value -2 is added to it's sons, node 2 and node 3. From node 2 it propagates again, adding value 2 to it's sons, node 4 and node 5. Node 3 has no sons, so it cannot propagate from there. The values of the nodes are [3, 3, - 1, 0, 1].
You can see all the definitions about the tree at the following link: http://en.wikipedia.org/wiki/Tree_(graph_theory)
- Codeforces Round #225 (Div. 1)C(dfs+线段树)
- Codeforces Round #225 (Div. 1) C-Propagating tree (DFS序+线段树/树状数组)
- Codeforces Round #225 (Div. 1) C 树状数组 || 线段树
- Codeforces Round #225 (Div. 1)-C. Propagating tree(线段树)
- Codeforces Round #200 (Div. 1) D. Water Tree(dfs序+线段树)
- 线段树Codeforces Beta Round #99 (Div. 1)C
- Codeforces Round #316 (Div. 2) C. Replacement(线段树)
- Codeforces Round #200 (Div. 1)D. Water Tree 【dfs序+线段树】
- Codeforces Round #200 (Div. 1) Water Tree (dfs序+线段树)
- Codeforces Round #310 (Div. 1)B,C,D(set+线段树)
- Codeforces Round #349 (Div. 1) C E (计数. SAM+线段树)
- Codeforces Round #321 (Div. 2)(C)模拟,DFS
- Codeforces Round #398 (Div. 2) -- C. Garland (dfs)
- Codeforces Round #197 (Div. 2) C(dfs)
- Codeforces Round #301 C (Div. 2) 【dfs】
- Codeforces Round #359 (Div. 2) C DFS
- Codeforces Round #321 (Div. 2) C DFS
- Codeforces Round #376 (Div. 2)C(DFS)
- git更换仓库地址
- C++ 注意事项
- UICollectionView详解
- 杭电--水仙花数
- hiho一下 第二十三周---最短路径·一:Dijkstra算法
- Codeforces Round #225 (Div. 1)C(dfs+线段树)
- Odoo文档管理/知识管理应用实践 - 上传附件
- 软件测试基础知识
- Mac OS X 10.10更新及体验
- /bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别
- C# 参考之上下文关键字get、set、value、partial、where和yield
- C语言——通过调用函数改变形参指针 改变实参指针问题
- C++中静态存储区与栈以及堆的区别详解
- Java简单的socket 通信