小红树
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红拿到了一棵树,每个节点被染成了红色或者蓝色。
小红定义每条边的权值为:删除这条边时,形成的两个子树的同色连通块数量之差的绝对值。
小红想知道,所有边的权值之和是多少?

输入描述:

第一行输入一个正整数n,代表节点的数量。
第二哈输入一个长度为n且仅由'R'和'B'两种字符组成的字符串。第i个字符为'R'代表i号节点被染成红色,为'B'被染成蓝色。
接下来的n-1行,每行输入两个正整数uv,代表节点u和节点v有一条边相连。
1\leq n \leq 200000

输出描述:

一个正整数,代表所有节点的权值之和。
示例1

输入

复制
4
BBRR
1 2
3 2
4 1

输出

复制
2

说明

该树的示意图如下:

1-2这条边的权值为0,因为删除后,两个子树的同色连通块都是2。
3-2这条边的权值为1,因为删除后,两个子树的同色连通块数量分别是1和2。
1-4这条边的权值为1,因为删除后,两个子树的同色连通块数量分别是2和1。
答案为0+1+1=2。