Under construction

Still being built. Things may change

Balancing a Tree

Time limit2sMemory limit1024 MB

Summary
Pick each node's spot count within its [l, r] range so that the largest gap between any node and its ancestor is as small as possible.
Level

Medium7 of 10

Topics
Dynamic programming, Binary search, Tree
Solved
No attempts yet

Problem

Farmer John has conducted an extensive study of the evolution of different cow breeds. The result is a rooted tree with NN (2≤N≤1052\le N\le 10^5) nodes labeled 1…N1\ldots N, each node corresponding to a cow breed. For each i∈[2,N]i\in [2,N], the parent of node ii is node pip_i (1≤pi<i1\le p_i < i), meaning that breed ii evolved from breed pip_i. A node jj is called an ancestor of node ii if j=pij=p_i or jj is an ancestor of pip_i. Every node ii in the tree is associated with a breed having an integer number of spots sis_i. The imbalance of the tree is defined to be the maximum of ∣si−sj∣|s_i-s_j| over all pairs of nodes (i,j)(i,j) such that jj is an ancestor of ii. Farmer John does not know the exact value of sis_i for each breed, but he knows lower and upper bounds on these values. Your job is to assign an integer value si∈[li,ri]s_i\in[l_i,r_i] (0≤li≤ri≤1090\le l_i\le r_i\le 10^9) to each node so that the imbalance of the tree is minimized.

Input

The first line contains TT (1≤T≤101\le T\le 10), the number of independent test cases, and an integer B∈{0,1}B\in\{0,1\}. Each test case starts with a line containing NN, followed by a line with N−1N-1 integers p2,p3,…,pNp_2,p_3,\ldots,p_N. The next NN lines each contain two integers lil_i and rir_i. It is guaranteed that the sum of NN over all test cases does not exceed 10510^5.

Output

For each test case, output one or two lines, depending on the value of BB. The first line should contain the minimum imbalance. If B=1B=1, print one more line with NN space-separated integers s1,s2,…,sNs_1,s_2,\ldots,s_N that achieve that imbalance. Any valid assignment is accepted.

Examples2

  1. Example 1

    Input
    3 0
    3
    1 1
    0 100
    1 1
    6 7
    5
    1 2 3 4
    6 6
    1 6
    1 6
    1 6
    5 5
    3
    1 1
    0 10
    0 1
    9 10
    
    Expected output
    3
    1
    4
    
  2. Example 2

    Input
    3 1
    3
    1 1
    0 100
    1 1
    6 7
    5
    1 2 3 4
    6 6
    1 6
    1 6
    1 6
    5 5
    3
    1 1
    0 10
    0 1
    9 10
    
    Expected output
    3
    3 1 6
    1
    6 5 5 5 5
    4
    5 1 9