아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

치트

시간 제한10초메모리 제한256 MB

요약
부모 간선을 조부모로 건너뛰는 치트를 최대 k개 써서 만들 수 있는 목표 완료 순서를 셉니다.
난이도

어려움10점 중 8점

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

문제

코스모는 젤다의 전설 시리즈의 잘 알려지지 않은 최신작 "황혼의 시간 가면을 쓴 하늘의 바람"을 하고 있다. 이 게임에서 플레이어는 젊은 모험가 링크가 되어 목표 nn개를 전부 완료해야 한다. 몇몇 목표는 다른 목표보다 먼저 끝내야 한다. 목표 ii (i=2,3,…,ni = 2, 3, \dots, n)에는 선행 목표 PiP_i가 하나씩 있고, ii를 완료하려면 PiP_i를 먼저 완료해야 한다. 1번 목표에는 선행 목표가 없다. 선행 관계에는 순환이 없다.

이 게임에는 숨겨진 치트도 있다. 목표 ii (i=2,3,…,ni = 2, 3, \dots, n)마다 치트가 하나씩 있고, 이 치트를 쓰면 ii를 선행 목표 PiP_i보다 먼저 완료할 수 있다. 그래도 순서를 완전히 무시하지는 못한다. 목표 ii에 치트를 쓰면 ii는 PiP_i 다음이 아니라 PiP_i의 선행 목표인 PPiP_{P_i} 다음에만 완료하면 된다. Pi=1P_i = 1이면 1번 목표에 선행 목표가 없으므로 ii는 아무 때나 완료할 수 있다.

가까운 목표에 치트를 몰아 쓰면 게임이 예측할 수 없게 동작한다. 목표 ii에 치트를 쓰면 PiP_i에는 치트를 쓸 수 없고, ii를 선행 목표로 갖는 목표에도 치트를 쓸 수 없다. 선행 관계로 바로 이어진 두 목표에 치트를 동시에 쓸 수는 없다. 선행 목표가 같은 두 목표에는 각각 치트를 쓸 수 있다.

코스모는 치트를 최대 kk번 쓰면서 게임을 끝내려고 한다. 이 규칙을 지키면서 목표 nn개를 모두 완료하는 순서가 몇 가지인지 세어라. 서로 다른 치트 조합으로 같은 순서를 만들 수 있어도 그 순서는 한 번만 센다. 답이 매우 클 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다.

입력

입력은 테스트 케이스 여러 개로 이루어진다. 각 테스트 케이스의 첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤2001 \le n \le 200, 0≤k<n0 \le k < n). nn은 목표의 수이고, kk는 코스모가 쓸 치트 횟수의 상한이다. 다음 줄에 정수 n−1n-1개가 공백으로 구분되어 주어진다 (1≤p≤n1 \le p \le n). 차례대로 목표 2,3,…,n2, 3, \dots, n의 선행 목표다. 1번 목표는 선행 목표가 없어서 이 목록에서 빠진다. n=1n = 1이면 이 줄은 비어 있다. 입력의 마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스마다 코스모가 치트를 kk번 이하로 쓰면서 목표 nn개를 모두 완료하는 순서의 수를 109+710^9+7로 나눈 나머지로 한 줄에 하나씩 출력한다. 공백과 빈 줄은 출력하지 않는다.

힌트

첫 번째 예제에서 n=5n = 5이고 선행 목표는 P2=1P_2 = 1, P3=1P_3 = 1, P4=5P_4 = 5, P5=1P_5 = 1이다. 치트를 한 번도 쓰지 않는 순서가 12가지, 목표 4의 치트를 쓰는 순서가 12가지, 목표 5의 치트를 쓰는 순서가 8가지, 목표 2의 치트를 쓰는 순서와 목표 3의 치트를 쓰는 순서가 각각 3가지다. 모두 더하면 38이다.

예제2

  1. 예제 1

    입력
    5 1
    1 1 5 1
    0 0
    
    예상 출력
    38
    
  2. 예제 2

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