#S6U04P06. 【作业】每个分支的最大值

【作业】每个分支的最大值

每个分支的最大值

难度:T2

【知识点:二叉树遍历】【知识点:递归】

前置知识:孩子数组、空树、对应遍历规则

题目描述

给定一棵合法二叉树,节点编号为 11 到 nn,根编号为 rootroot。左右孩子有区别,编号大小与位置无关;00 表示空孩子,不是节点。保证无环、所有节点属于同一棵树、非根恰好有一个父节点。

每个节点有整数权值 vuv_u,可能为负数。求每个节点的子树内最大权值,包含自己,最后按节点编号从小到大输出这些最大值。

输入格式

第一行给 n,rootn,root。接下来 nn 行,第 uu 行给 lcu,rculc_u,rc_u,表示节点 uu 的左右孩子。最后一行按编号给出 nn 个权值。

输出格式

一行输出题目所求序列,整数之间用空格分隔。

样例输入

7 1
2 3
4 5
0 6
0 0
7 0
0 0
0 0
-1 -2 -3 -4 -5 -6 -7

样例输出

-1 -2 -3 -4 -5 -6 -7

数据范围

1≤n≤2001\le n\le200,1≤root≤n1\le root\le n,0≤lcu,rcu≤n0\le lc_u,rc_u\le n。−1000≤vu≤1000-1000\le v_u\le1000。