CSES - Tree Coin Collecting II | Thu Thập Xu Trên Cây II

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: 2100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một cây có \(n\) đỉnh. Một số đỉnh chứa một đồng xu.

Nhiệm vụ của bạn là trả lời \(q\) truy vấn dạng: độ dài ngắn nhất của một đường đi từ đỉnh \(a\) đến đỉnh \(b\) có đi qua tất cả các đỉnh chứa xu là bao nhiêu?

Input

Dòng đầu tiên chứa hai số nguyên \(n\)\(q\): số đỉnh và số truy vấn. Các đỉnh được đánh số \(1, 2, \dots, n\).

Dòng thứ hai chứa \(n\) số nguyên \(c_1, c_2,\dots, c_n\). Nếu \(c_i = 1\), đỉnh \(i\) có xu. Nếu \(c_i = 0\), đỉnh \(i\) không có xu. Bạn có thể giả sử rằng có ít nhất một đỉnh có xu.

Sau đó có \(n-1\) dòng mô tả các cạnh. Mỗi dòng chứa hai số nguyên \(a\)\(b\): có một cạnh giữa hai đỉnh \(a\)\(b\).

Cuối cùng có \(q\) dòng mô tả các truy vấn. Mỗi dòng chứa hai số nguyên \(a\)\(b\): đỉnh bắt đầu và đỉnh kết thúc.

Output

In ra \(q\) số nguyên: đáp án của các truy vấn.

Constraints

  • \(1 \le n, q \le 2 \cdot 10^5\)

  • \(1 \le a, b \le n\)

Example

Test 1

Input
5 4
1 0 0 1 0
2 4
2 3
1 3
3 5
1 5
3 2
4 4
5 5
Output
6
5
6
8

Bình luận

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

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