/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Main
{
public static int dfs(int node, ArrayList<Integer>[] adj, int[] vis){
vis[node] = 1;
int cnt = 1;
for(int child: adj[node]){
if(vis[child] == 0){
cnt += dfs(child, adj, vis);
}
}
return cnt;
}
public static int findRoute(int[][] edges, int[] col, int n){
for (int i = 0; i < n; i++){
adj[i] = new ArrayList<>();
}
for(int i=0;i<edges.length;i++){
int x = edges[i][0];
int y = edges[i][1];
if(col[x] == col[y]){
adj[x].add(y);
adj[y].add(x);
}
}
int cnt = 0;
int[] vis = new int[n];
for(int i=0;i<n;i++){
if(vis[i] == 0){
int cur_cnt = dfs(i, adj, vis);
cnt += cur_cnt;
}
}
return cnt;
}
{
// your code goes here
Scanner sc
= new Scanner
(System.
in); int n = sc.nextInt();
int[][] edges = new int[n-1][2];
for(int i=0;i<n-1;i++){
edges[i][0] = sc.nextInt() - 1;
edges[i][1] = sc.nextInt() - 1;
}
int[] col = new int[n];
for(int i=0;i<n;i++){
col[i] = sc.nextInt();
}
System.
out.
println(findRoute
(edges, col, n
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIGludCBkZnMoaW50IG5vZGUsIEFycmF5TGlzdDxJbnRlZ2VyPltdIGFkaiwgaW50W10gdmlzKXsKCQl2aXNbbm9kZV0gPSAxOwoJCWludCBjbnQgPSAxOwoJCWZvcihpbnQgY2hpbGQ6IGFkaltub2RlXSl7CgkJCWlmKHZpc1tjaGlsZF0gPT0gMCl7CgkJCQljbnQgKz0gZGZzKGNoaWxkLCBhZGosIHZpcyk7CgkJCX0KCQl9CgkJcmV0dXJuIGNudDsKCX0KCXB1YmxpYyBzdGF0aWMgaW50IGZpbmRSb3V0ZShpbnRbXVtdIGVkZ2VzLCBpbnRbXSBjb2wsIGludCBuKXsKCQlBcnJheUxpc3Q8SW50ZWdlcj5bXSBhZGogPSBuZXcgQXJyYXlMaXN0W25dOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQkJYWRqW2ldID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJfQoJCWZvcihpbnQgaT0wO2k8ZWRnZXMubGVuZ3RoO2krKyl7CgkJCWludCB4ID0gZWRnZXNbaV1bMF07CgkJCWludCB5ID0gZWRnZXNbaV1bMV07CgkJCWlmKGNvbFt4XSA9PSBjb2xbeV0pewoJCQkJYWRqW3hdLmFkZCh5KTsKCQkJCWFkalt5XS5hZGQoeCk7CgkJCX0KCQl9CgkJCgkJaW50IGNudCA9IDA7CgkJaW50W10gdmlzID0gbmV3IGludFtuXTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkJaWYodmlzW2ldID09IDApewoJCQkJaW50IGN1cl9jbnQgPSBkZnMoaSwgYWRqLCB2aXMpOwoJCQkJY250ICs9IGN1cl9jbnQ7CgkJCX0KCQl9CgkJcmV0dXJuIGNudDsKCX0KCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlpbnQgbiA9IHNjLm5leHRJbnQoKTsKCQlpbnRbXVtdIGVkZ2VzID0gbmV3IGludFtuLTFdWzJdOwoJCWZvcihpbnQgaT0wO2k8bi0xO2krKyl7CgkJCWVkZ2VzW2ldWzBdID0gc2MubmV4dEludCgpIC0gMTsKCQkJZWRnZXNbaV1bMV0gPSBzYy5uZXh0SW50KCkgLSAxOwoJCX0KCQkKCQlpbnRbXSBjb2wgPSBuZXcgaW50W25dOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCQljb2xbaV0gPSBzYy5uZXh0SW50KCk7CgkJfQoJCVN5c3RlbS5vdXQucHJpbnRsbihmaW5kUm91dGUoZWRnZXMsIGNvbCwgbikpOwoJfQp9