小团找到一颗有n个节点的苹果树,以1号节点为根,且每个节点都有一个苹果,苹果都有一个颜色,但是这棵树被施加了咒术,这使得小团只能从某一个节点的子树中选取某一种颜色的拿。小团想要拿到数量最多的那种颜色的所有苹果,请帮帮她。每次她会指定一个节点t,如果小团只能从节点t的子树中选取某一种颜色的苹果,选取什么颜色能拿到最多的苹果?如果有多种颜色都可以拿同样多的苹果,输出颜色编号最小的那个对应的编号。 节点x的子树定义为所有将x当作祖先的节点,x也视为x的子树的一部分。
第一行一个正整数n表示这颗树上节点的个数。 接下来n-1行,每行两个正整数x_i,y_i,表示树上第i条边连接的两个节点。 接下来一行n个正整数c_i,分别表示从1~n号节点上的苹果的颜色。 接下来一行一个正整数q,表示接下来有q次独立的询问。 接下来q行,每行一个正整数t表示询问:如果小团只能从节点t的子树中选取某一种颜色的苹果,选取什么颜色能拿到最多的苹果?如果有多种颜色都可以拿同样多的苹果,输出颜色编号最小的那个对应的编号。 对于100%的数据n≤5000, 1≤x_i,y_i,t≤n, c_i≤1000000000,q≤1000
输出q行,每行一个整数,表示答案。
7 1 2 1 3 2 4 2 5 3 6 3 7 1 1 2 1 2 2 3 7 1 2 3 4 5 6 7
1 1 2 1 2 2 3
考点:树
数据规模 q ≤ 1e3 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:树
树结构上的遍历(DFS 求子树信息 / BFS 求层序),多数树题是「后序遍历 + 回溯」。
思路框架(树 通法 · 非本题专属)
实现要点:递归深度可能到 1e5,注意递归爆栈;必要时改迭代或调整递归深度。
复杂度:时间 O(n) | 空间 O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1
7 / 1 2 / 1 3 / 2 4 / 2 5 / 3 6 / 3 7 / 1 1 2 1 2 2 3 / 7 / 1 / 2 / 3 / 4 / 5 / 6 / 71 / 1 / 2 / 1 / 2 / 2 / 3解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:美团2023校招技术第9场编程题。