만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

순서 세기

시간 제한2초메모리 제한512 MB

요약
루트가 있는 트리에서 각 정점이 모든 자손보다 앞에 오는 순열 중 k번째 자리에 정점 v가 오는 경우의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
트리, 조합론, 동적 계획법
정답자
아직 제출이 없습니다

문제

뿌리가 있는 트리가 주어진다. 트리의 정점은 11부터 nn까지 번호가 붙어 있고, 루트는 정점 11이다. 2 이상의 각 정점 ii의 부모는 정점 pip_i이다.

순열 qiq_i (1≤i≤n1 \le i \le n)를 생각하자. 임의의 정점 vv에 대해 vv의 모든 자손이 순열 qq에서 vv의 위치보다 오른쪽에 있으면, 이 순열을 적절한 순열이라고 부른다.

qk=vq_k = v를 만족하는 적절한 순열 qiq_i의 개수를 109+710^9 + 7로 나눈 나머지를 구하라.

입력

첫 번째 줄에 정점의 개수 nn (1≤n≤50001 \leq n \leq 5000)이 주어진다.

두 번째 줄에는 p2,p3,…,pnp_2, p_3, \ldots, p_n (1≤pi<i1 \leq p_i < i)이 주어진다. 이는 정점 2부터 nn까지의 부모이다. n=1n = 1이면 이 줄은 비어 있다.

마지막 줄에는 두 정수 vv와 kk (1≤v,k≤n1 \le v, k \le n)가 주어진다.

출력

qk=vq_k = v를 만족하는 적절한 순열 qiq_i의 개수를 109+710^9 + 7로 나눈 나머지를 한 정수로 출력한다.

힌트

예제의 적절한 순열은 1 3 2 4 5 6, 1 3 2 4 6 5, 1 3 2 5 4 6, 1 3 2 5 6 4, 1 3 2 6 4 5, 1 3 2 6 5 4, 1 4 2 3 5 6, 1 4 2 3 6 5, 1 4 2 5 3 6이다.

예제1

  1. 예제 1

    입력
    6
    1 1 1 2 3
    2 3
    
    예상 출력
    9