题目意思就是将这个树结构染色成给出的序列的颜色,染色操作会影响到染色的节点及其所有子树
思路:先染下面的节点的话,如果上面的父节点需要染色,则子节点的染色就白染了,
因此我们应该先染父节点,从上往下染色,如果当前节点和父节点需要染色颜色不一样,那么需要染色的操作+1,这个操作用来染当前节点
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e4+10;
int p[N],c[N];
int main()
{
int n;
scanf("%d", &n);
for(int i=2; i<=n; ++i) scanf("%d", &p[i]);
for(int i=1; i<=n; ++i) scanf("%d", &c[i]);
int res = 1;
for(int i=2; i<=n; ++i){
if(c[i] != c[p[i]])
res++;
}
printf("%d\n",res);
return 0;
}