Cây Cấp Số Cộng

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 (p) Thời gian: 3.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

ami có một cây \(n\) nút, mỗi đỉnh được đánh số từ \(1\) đến \(n\), nút \(i\) được gắn số \(a_i\). Một đường đi từ \(u\) đến \(v\) là đường đi xuất phát từ \(u\), đi qua các đỉnh kề không quá một lần và kết thúc ở \(v\). Các bạn cần tính xem có bao nhiêu giá trị \(D \geq 0\) mà tồn tại ít nhất một đường đi giữa 2 nút trên cây là một cấp số cộng công sai \(D\). Với mỗi \(D\) tìm được, hãy tìm ra đường đi có độ dài lớn nhất thoả mãn điều kiện. Độ dài đường đi giữa 2 nút \(u\) và \(v\) là số lượng nút nằm trên đường đi đó.

Input

  • Dòng đầu tiên gồm một số nguyên dương \(n\) là số đỉnh của cây.
  • \(n-1\) dòng tiếp theo, mỗi dòng chứa 2 số \(u\) và \(v\) biểu diễn một cạnh nối giữa 2 đỉnh \(u\) và \(v\).
  • Dòng tiếp theo gồm \(n\) số nguyên \(a_1, a_2, a_3, \ldots, a_n\). \(a_i\) là giá trị trên nút \(i\).

Output

  • Gồm một vài dòng, mỗi dòng có 2 số \(D\) và \(x\). Với ý nghĩa, đường đi dài nhất có công sai \(D\) có độ dài là \(x\).
  • Các bạn cần in \(D\) theo thứ tự tăng dần.

Example

Test 1

Input
9
1 2
1 3
2 4
2 5
3 6
3 7
5 8
7 9
1 4 0 3 7 -1 -1 10 -2
Output
1 4
3 4
Note

Một đường đi có công sai \(1\) là đường đi từ nút \(9\) đến nút \(1\). Dãy số là \(-2\ -1\ 0\ 1\) và có độ dài là \(4\).

Một đường đi có công sai \(3\) là đường đi từ nút \(1\) đến nút \(8\). Dãy số là \(1\ 4\ 7\ 10\) và có độ dài là \(4\).

Giới hạn

  • \(2 \leq n \leq 3 \cdot 10^5\)
  • \(1 \leq a_i \leq 10^9\)

Bình luận

Mới nhất
Tải bình luận...

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