最远点对 题面描述 小杨有一棵包含n个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。 小杨想知道相距最远的一对不同颜色节点的距离是多少。 输入格式 第一行包含一个正整数 n,代表树的节点数。 第二行包含n个非负整数a1,a2,...,an(对于所有的1≤i≤n,均有ai等于0或1),其中如果ai=0,则节点i的颜色为白色;如果ai=1,则节点i的颜色为黑色。 之后n-1行,每行包含两个正整数xi,yi,代表存在一条连接节点xi和yi的边。 保证输入的树中存在不同颜色的点。 输出格式 输出一个整数,代表相距最远的一对不同颜色节点的距离。 样例1 样例解释 相距最远的不同颜色的一对节点为节点 2和 5。 数据范围

正确答案:树形DP。每个节点维护子树内到该点距离最远的白、黑节点深度。合并时取来自不同分支、颜色不同的两个最远距离相加,更新全局最长异色路径。DFS自底向上统计即可。
试卷来源:202406 CCF-GESP编程能力等级认证C++八级真题