首先处理出树根为1时每个点子树内的C类型节点数量。
考虑删除一个S类型节点,此时剩下的连通块中,只有其每个直接子节点与其父节点对应,而直接子节点内C类型节点的数量可以通过预处理子树C类型节点得到,那么就只需要获取父节点对应的连通块。
发现父节点对应的连通块实际上就是除去点u所在子树剩下的节点,因此可以用总体C类型节点数量减去u内C类型节点数量得到。
在一棵有 n 个节点的树状网络中,每个节点被标记为红色(R)或黑色(B)两种类型。保证至少存在一个红色节点。若删除一个红色节点以及与其相连的所有边,网络将分裂成若干连通块。定义每个连通块的价值为其中包含的黑色节点数量。你需要选择一个红色节点删除,使得分裂后所有连通块的价值最大值尽可能大。计算这个最大可能的价值。
输入数据满足:节点总数 n 不超过 105;标记字符串长度等于 n,仅由字符 R 和 B 组成,且至少含有一个 R;所有边的端点编号均为 1 到 n 之间的整数。
输入共 n+1 行。
第一行包含一个整数 n(1≤n≤105),表示节点总数。
第二行包含一个长度为 n 的字符串,由字符 R 和 B 组成,依次表示第 1 到第 n 个节点的标记。保证字符串中至少有一个 R。
接下来 n−1 行,每行包含两个整数 u 和 v(1≤u,v≤n,$u
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册