题目:

A - Coloring a Tree_数组

 

 题目网站:https://codeforces.com/problemset/problem/813/C​

思路:

 要把一个没有颜色的树变成所给颜色的树,用两个数组存储树的关系,以及树的颜色;

在运用搜索的思想对颜色数组扫一遍,判断子节点与父节点颜色是否相同不同就ans++;

搜索完后就输出答案。

代码实现:



#include <iostream>
using namespace std;
int n,ans=0;
int a[10005],b[10005];
int main()
{
//输入信息
cin>>n;
for(int c1=2;c1<=n;c1++)
cin>>a[c1];
for(int c1=1;c1<=n;c1++)
cin>>b[c1];
//判断子节点与父节点颜色是否相同
for(int c1=1;c1<=n;c1++)
if(b[c1]!=b[a[c1]])
ans++;
cout<<ans<<endl;
return 0;
}