牛牛的树
题号:NC21629
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

牛牛有一棵标号为0到n-1的树,他用一个p数组来描述这棵树,p[i]表示p[i]与i+1之间有一条无向边

树的每一条边上都有一盏灯,每个灯都有开与关两种状态,边的编号为0到n-2,第i条边连接p[i]与(i+1)
有些边对你来说是非常重要的,你的目标是点亮所有这些边上的灯

你能做的操作是每次选择一条路径,将路径上的灯的状态取反。

输出最少需要的操作次数

输入描述:

第一行输入一个整数n(2 ≤ n ≤ 50)

第二行输入n - 1个整数p[i](0 ≤ i ≤ n-2), 表示p[i]与i+1之间有一条边,0 ≤ p[i] ≤ i

第三行输入一个长度为n-1的01串表示每条边上灯的状态

第四行输入一个长度为n-1的01串表示每条边是否重要

输出描述:

输出一个整数
示例1

输入

复制
5
0 0 1 1
0001
0111

输出

复制
1

说明

TurnOnLamps11.png
示例2

输入

复制
7
0 0 1 1 4 4
000100
111111

输出

复制
2

说明

TurnOnLamps13.png
示例3

输入

复制
50
0 0 1 2 4 4 6 1 2 5 2 8 8 3 6 4 14 7 18 14 11 7 1 12 7 5 18 23 0 14 11 10 2 2 6 1 30 11 9 12 5 35 25 11 23 17 14 45 15
0000000000010000000000000010000010100000000000000
1010111111111011011111000110111111111111111110111

输出

复制
14

备注:

子任务一30分:n,m<=10

子任务二30分:n,m<=20

子任务三40分:n,m<=50