F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

Counting heaps

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 714    Accepted Submission(s): 155


Problem Description
We are given a rooted tree of n vertices. The vertices are to be labeled with numbers 1,2,..., n so that each label is unique and the heap condition holds, i.e. the label of any vertex is less than the label of its parent. How many such labellings exist? Since this number may be quite large, calculate only its
remainder modulo m.
 

Input
The input contains several tree descriptions. The first line contains the number of input trees t (t <=250).

Each tree description begins with a line containing the size of the tree n (1 <= n <= 500000) and an integer m (2 <= m <= 10^9). n - 1 lines follow, i-th of which contains p(i + 1), the number of the parent of the i + 1-th vertex (1 <= p(i + 1) <= i). Vertex number 1 will be the root in each tree, so its parent will not be given. Total size of the input will not exceed 50MB.
 

Output
For each tree output the number of its valid labellings modulo given m.
 

Sample Input
4 3 1000000 1 1 4 1000000 1 1 1 5 1000000 1 2 3 4 5 1000000 1 1 3 3
 

Sample Output
2 6 1 8
 

Hint


 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-11-22 17:23:04, Gzip enabled