import java.util.*;
import java.io.*;
public class Main {
static List<Integer>[] tree;
static char[] color;
static long[] weight;
static long minCost
= Long.
MAX_VALUE;
int n
= Integer.
parseInt(br.
readLine()); color = br.readLine().trim().toCharArray();
weight = new long[n];
for (int i = 0; i < n; i++) {
weight
[i
] = Long.
parseLong(st.
nextToken()); }
for (int i = 0; i < n; i++) tree[i] = new ArrayList<>();
for (int i = 0; i < n - 1; i++) {
int u
= Integer.
parseInt(st.
nextToken()) - 1; int v
= Integer.
parseInt(st.
nextToken()) - 1; tree[u].add(v);
tree[v].add(u);
}
// 遍历每个节点作为可能的根节点
for (int root = 0; root < n; root++) {
char target = color[root];
long[] totalCost = new long[1];
boolean[] visited = new boolean[n];
dfs(root, -1, target, totalCost, visited);
minCost
= Math.
min(minCost, totalCost
[0]); }
}
// 返回该子树是否需要修改
static boolean dfs(int node, int parent, char target, long[] totalCost, boolean[] visited) {
visited[node] = true;
boolean needModify = (color[node] != target);
long subtreeWeight = weight[node];
for (int child : tree[node]) {
if (child != parent && !visited[child]) {
boolean childNeedModify = dfs(child, node, target, totalCost, visited);
if (childNeedModify) {
needModify = true;
// 子节点需要修改,其权值已在递归中累加
} else {
subtreeWeight += weight[child]; // 仅累加不需要修改的子树的权值
}
}
}
if (needModify && parent != -1) { // 非根节点需要修改时才累加
totalCost[0] += subtreeWeight;
}
return needModify;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIExpc3Q8SW50ZWdlcj5bXSB0cmVlOwogICAgc3RhdGljIGNoYXJbXSBjb2xvcjsKICAgIHN0YXRpYyBsb25nW10gd2VpZ2h0OwogICAgc3RhdGljIGxvbmcgbWluQ29zdCA9IExvbmcuTUFYX1ZBTFVFOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgIGludCBuID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKICAgICAgICBjb2xvciA9IGJyLnJlYWRMaW5lKCkudHJpbSgpLnRvQ2hhckFycmF5KCk7CiAgICAgICAgd2VpZ2h0ID0gbmV3IGxvbmdbbl07CiAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihici5yZWFkTGluZSgpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICB3ZWlnaHRbaV0gPSBMb25nLnBhcnNlTG9uZyhzdC5uZXh0VG9rZW4oKSk7CiAgICAgICAgfQoKICAgICAgICB0cmVlID0gbmV3IEFycmF5TGlzdFtuXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgdHJlZVtpXSA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgICAgICBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYnIucmVhZExpbmUoKSk7CiAgICAgICAgICAgIGludCB1ID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSkgLSAxOwogICAgICAgICAgICBpbnQgdiA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCkpIC0gMTsKICAgICAgICAgICAgdHJlZVt1XS5hZGQodik7CiAgICAgICAgICAgIHRyZWVbdl0uYWRkKHUpOwogICAgICAgIH0KCiAgICAgICAgLy8g6YGN5Y6G5q+P5Liq6IqC54K55L2c5Li65Y+v6IO955qE5qC56IqC54K5CiAgICAgICAgZm9yIChpbnQgcm9vdCA9IDA7IHJvb3QgPCBuOyByb290KyspIHsKICAgICAgICAgICAgY2hhciB0YXJnZXQgPSBjb2xvcltyb290XTsKICAgICAgICAgICAgbG9uZ1tdIHRvdGFsQ29zdCA9IG5ldyBsb25nWzFdOwogICAgICAgICAgICBib29sZWFuW10gdmlzaXRlZCA9IG5ldyBib29sZWFuW25dOwogICAgICAgICAgICBkZnMocm9vdCwgLTEsIHRhcmdldCwgdG90YWxDb3N0LCB2aXNpdGVkKTsKICAgICAgICAgICAgbWluQ29zdCA9IE1hdGgubWluKG1pbkNvc3QsIHRvdGFsQ29zdFswXSk7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluQ29zdCk7CiAgICB9CgogICAgLy8g6L+U5Zue6K+l5a2Q5qCR5piv5ZCm6ZyA6KaB5L+u5pS5CiAgICBzdGF0aWMgYm9vbGVhbiBkZnMoaW50IG5vZGUsIGludCBwYXJlbnQsIGNoYXIgdGFyZ2V0LCBsb25nW10gdG90YWxDb3N0LCBib29sZWFuW10gdmlzaXRlZCkgewogICAgICAgIHZpc2l0ZWRbbm9kZV0gPSB0cnVlOwogICAgICAgIGJvb2xlYW4gbmVlZE1vZGlmeSA9IChjb2xvcltub2RlXSAhPSB0YXJnZXQpOwogICAgICAgIGxvbmcgc3VidHJlZVdlaWdodCA9IHdlaWdodFtub2RlXTsKICAgICAgICAKICAgICAgICBmb3IgKGludCBjaGlsZCA6IHRyZWVbbm9kZV0pIHsKICAgICAgICAgICAgaWYgKGNoaWxkICE9IHBhcmVudCAmJiAhdmlzaXRlZFtjaGlsZF0pIHsKICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hpbGROZWVkTW9kaWZ5ID0gZGZzKGNoaWxkLCBub2RlLCB0YXJnZXQsIHRvdGFsQ29zdCwgdmlzaXRlZCk7CiAgICAgICAgICAgICAgICBpZiAoY2hpbGROZWVkTW9kaWZ5KSB7CiAgICAgICAgICAgICAgICAgICAgbmVlZE1vZGlmeSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgLy8g5a2Q6IqC54K56ZyA6KaB5L+u5pS577yM5YW25p2D5YC85bey5Zyo6YCS5b2S5Lit57Sv5YqgCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHN1YnRyZWVXZWlnaHQgKz0gd2VpZ2h0W2NoaWxkXTsgLy8g5LuF57Sv5Yqg5LiN6ZyA6KaB5L+u5pS555qE5a2Q5qCR55qE5p2D5YC8CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKG5lZWRNb2RpZnkgJiYgcGFyZW50ICE9IC0xKSB7IC8vIOmdnuagueiKgueCuemcgOimgeS/ruaUueaXtuaJjee0r+WKoAogICAgICAgICAgICB0b3RhbENvc3RbMF0gKz0gc3VidHJlZVdlaWdodDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5lZWRNb2RpZnk7CiAgICB9Cn0=