빨강 검정 트리
시간 제한4초메모리 제한512 MB
루트가 있는 트리에서 조상과 자손이 함께 선택되지 않도록 노드를 고르는 경우 중, 빨간 노드를 정확히 k개 포함하는 경우의 수를 k=0부터 m까지 구합니다.
문제
루트가 있는 트리가 개의 노드로 주어진다. 노드는 부터 까지 번호가 매겨져 있고, 루트는 1번 노드이다. 노드 중 개는 빨간색이고 나머지는 검은색이다.
노드의 부분집합을 고르되, 고른 노드 중 어떤 노드도 다른 고른 노드의 조상이 되지 않도록 한다. 예를 들어 가 의 부모이고 가 의 부모라면, , , 중에서는 최대 하나만 고를 수 있다. 고른 노드 중 빨간 노드가 정확히 개가 되기를 원한다.
각각에 대해 빨간 노드를 정확히 개 포함하고 위 조건을 만족하는 부분집합의 개수를 구하라.
입력
첫 줄에 두 정수 과 이 주어진다 (, ). 이어지는 개의 줄에는 정수 가 하나씩 주어지며, 이는 차례로 2번 노드, 3번 노드, ...의 부모 번호이다. 이어지는 개의 줄에는 빨간 노드의 번호 이 하나씩 주어진다. 같은 이 두 번 나오지 않는다.
출력
개의 줄을 출력한다. 번째 줄에는 빨간 노드를 정확히 개 포함하고 조건을 만족하는 부분집합의 개수를 로 나눈 나머지를 출력한다.