#z191. DFS序2
DFS序2
题目描述
给定一棵包含n个节点的无向树,节点编号从1到n。每个节点都有一个正整数权值。请你从1号节点开始进行深度优先搜索(DFS),并计算以下两个值:
- 路径和:从根节点(1号节点)到当前节点的路径上所有节点的权值之和
- 子树和:以当前节点为根的子树中所有节点的权值之和
要求输出每个节点在首次被访问时的路径和,以及在回溯离开时的子树和。每个节点的两个值用空格分隔,节点之间按DFS首次访问顺序排列。
输入描述
第一行输入一个整数n,表示树的节点总数。 第二行输入n个正整数,分别表示1到n号节点的权值。 接下来n-1行,每行输入两个整数x和y,表示树中存在一条连接x和y的边。
输出n行,每行两个整数,分别表示对应节点的路径和与子树和。节点顺序按DFS首次访问顺序排列。
输入样例
3
2 3 4
1 2
1 3
输出样例
2 9
5 3
6 4
数据范围
1≤n≤100000,节点权值1≤w≤1000。