|
||||||||||
The LCIS on the TreeTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 2692 Accepted Submission(s): 770 Problem Description For a sequence S1, S2, ... , SN, and a pair of integers (i, j), if 1 <= i <= j <= N and Si < Si+1 < Si+2 < ... < Sj-1 < Sj , then the sequence Si, Si+1, ... , Sj is a CIS (Continuous Increasing Subsequence). The longest CIS of a sequence is called the LCIS (Longest Continuous Increasing Subsequence). Now we consider a tree rooted at node 1. Nodes have values. We have Q queries, each with two nodes u and v. You have to find the shortest path from u to v. And write down each nodes' value on the path, from u to v, inclusive. Then you will get a sequence, and please show us the length of its LCIS. Input The first line has a number T (T <= 10) , indicating the number of test cases. For each test case, the first line is a number N (N <= 105), the number of nodes in the tree. The second line comes with N numbers v1, v2, v3 ... , vN, describing the value of node 1 to node N. (1 <= vi <= 109) The third line comes with N - 1 numbers p2, p3, p4 ... , pN, describing the father nodes of node 2 to node N. Node 1 is the root and will have no father. Then comes a number Q, it is the number of queries. (Q <= 105) For next Q lines, each with two numbers u and v. As described above. Output For test case X, output "Case #X:" at the first line. Then output Q lines, each with an answer to the query. There should be a blank line *BETWEEN* each test case. Sample Input
Sample Output
Source | ||||||||||
|