목서 나무
시간 제한0.5초메모리 제한1024 MB
주어진 트리 T의 정점 1부터 n까지의 LCA 구조를 그대로 유지하고, 두 정점의 LCA 번호가 max(i, j) + k를 넘지 않는 (n+m)개 정점의 트리 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
8년 전 Little B는 목서 나무를 보았다. 목서 나무는 정점이 개인 트리 이며, 루트가 아닌 모든 정점의 부모는 자기 번호보다 작은 번호를 가진다. 정수 가 주어졌을 때, 정점이 개인 루트 트리 가 다음 조건을 모두 만족하면 를 번영하는 트리라고 한다.
- 인 모든 에 대해, 와 에서 정점 와 의 최소 공통 조상의 번호가 같다.
- 인 모든 에 대해, 에서 정점 와 의 최소 공통 조상의 번호는 를 넘지 않는다.
모든 정점은 1번부터 번호가 매겨지며 루트의 번호는 1이다. 는 루트가 아닌 모든 정점의 부모 번호가 자기 번호보다 작아야 한다는 조건을 만족할 필요가 없다.
Little B는 정점이 개인 번영하는 트리의 개수를 구하려 한다. 두 트리는 어떤 정점의 부모가 서로 다르면 다른 트리로 본다. 답을 로 나눈 나머지를 출력한다.
입력
입력에는 여러 개의 테스트 데이터가 포함된다.
첫 줄에는 테스트 케이스 번호 와 테스트 데이터의 개수 가 주어진다. 이면 샘플 테스트이다.
각 테스트 데이터의 첫 줄에는 정수 , , 가 주어진다. 둘째 줄에는 개의 정수 이 주어지며, 는 에서 정점 의 부모 번호이다.
출력
각 테스트 데이터에 대해, 번영하는 트리의 개수를 로 나눈 나머지를 한 줄에 출력한다.
제한
모든 테스트 데이터에 대해 다음이 보장된다.