USACO 2022 US Open Contest, Gold, Balancing a Tree

Xem PDF

Điểm: 1000 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Nông dân John đã tiến hành một nghiên cứu về sự tiến hóa của các giống bò khác nhau. Kết quả là một cây có gốc với \(N(1\leq N\leq 10^5)\) nút đánh số từ \(1\) đến \(N\), mỗi nút tương ứng với một giống bò. Với mỗi \(i∈[2,N]\), nút cha của \(i\) là nút \(p_i\) \((1\leq p_i <i)\), nghĩa là giống \(i\) tiến hóa từ giống \(p_i\). Nút \(j\) được gọi là tổ tiên của nút \(i\) nếu \(j=p_i\) hoặc \(j\) là tổ tiên của \(p_i\).

Mỗi nút \(i\) tương ứng với giống bò được gán số nguyên \(s_i\). Sự "mất cân bằng" của cây là giá trị lớn nhất của \(|s_i−s_j|\) trên tất cả các cặp nút \((i,j)\) với \(j\) là tổ tiên của \(i\).

Nông dân John không biết giá trị chính xác của \(s_i\) của mỗi giống, nhưng ông biết giới hạn dưới và giới hạn trên của những giá trị này. Công việc của bạn là gán giá trị nguyên của \(s_i∈[l_i,r_i]\) \((0 \leq l_i \leq r_i \leq 10^9)\) cho mỗi nút sao cho sự mất cân bằng của cây là nhỏ nhất.

Input

  • Dòng đầu tiên chứa số \(T(1\leq T \leq 10)\) - số lượng test con, và số nguyên \(B \in (0,1)\).

  • Dòng đầu tiên của mỗi test chứa số \(N\), sau đó là \(N-1\) số nguyên \(p_1,...p_N\).

  • \(N\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(l_i,r_i\).

  • Dữ liệu đảm bảo tổng \(N\) của tất cả các test không vượt quá \(10^5\).

Output

Với mỗi test, in ra \(1\) hoặc \(2\) dòng, dựa vào giá trị của \(B\):

  • Dòng đầu in ra độ mất cân bằng nhỏ nhất.
  • Nếu \(B=1\), dòng thứ \(2\) in ra \(N\) số nguyên \(s_1,...,s_N\) cách nhau bởi dấu cách.

Scoring

  • Subtask \(1\): \(l_i=r_i\) với mọi \(i\).
  • Subtask \(2\): \(p_i=i-1\) với mọi \(i\).
  • Subtask \(3\): Không có điều kiện gì thêm.

Với mỗi subtask, nửa đầu sẽ có \(B=0\), nửa sau sẽ có \(B=1\).

Example

Test 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
Output
3
1
4        
Note

Đối với test đầu tiên, độ mất cân bằng nhỏ nhất là \(3\). Một cách để đạt được là \([s_1,s_2,s_3]=[4,1,7]\).

Test 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
Output
3
3 1 6
1
6 5 5 5 5
4
5 1 9       
Note

Đối với test đầu tiên, độ mất cân bằng nhỏ nhất là \(3\). Một cách để đạt được là \([s_1,s_2,s_3]=[3,1,6]\).


Bình luận

Không có bình luận nào.