牛牛的玩具
题号:NC21656
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

牛牛有很多玩具,放在一棵无向树上。
树的标号从0到n-1, 有k个不同的节点上有玩具,一开始这k个点也放着炸弹
炸弹在T秒后就会爆炸,因此你有T次机会可以移动玩具
每次移动可以将若干个玩具移动到相邻的点上,在T秒内允许多个玩具在同一个节点
但是T秒后,一个节点只能有一个玩具
求最终可以保护多少个玩具不被炸掉

输入描述:

第一行输入两个整数n,T(2 ≤ n ≤ 50), (1 ≤ T ≤ 50)

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

第三行输入一个整数m表示玩具的数量

第四行输入m个互不相同的整数表示每个玩具所在的节点,

输出描述:

输出一个整数
示例1

输入

复制
4 1
0 1 2
2
2 3

输出

复制
1

说明

样例一包含空集
示例2

输入

复制
4 2
0 1 2
2 
2 3

输出

复制
2
示例3

输入

复制
11 50
0 1 2 3 4 5 6 7 8 9
7
0 1 2 3 4 5 6

输出

复制
4

备注:

子任务一30分:n<=10

子任务二30分:n<=20

子任务三40分:n<=50