Hệ thống thùng chứa nước

Xem PDF



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

Một hệ thống \(N\) thùng chứa nước giống nhau được biểu diễn dưới dạng cây, trong đó mỗi thùng chứa tương ứng với một đỉnh. Các thùng chứa được nối với nhau bằng \(N-1\) ống hai chiều. Hai thùng chứa kết nối với nhau luôn được đặt trên các tầng liền kề. Nếu hai thùng \(a\)\(b\) được kết nối với nhau thì hai tầng đặt thùng \(a\)\(b\) chênh nhau một đơn vị, nghĩa là \(|level_a - level_b| = 1\). Thùng \(1\) được đặt ở tầng dưới cùng. Mỗi thùng được kết nối với chính xác một thùng ở tầng bên dưới (ngoại trừ duy nhất thùng \(1\) không có kết nối nào bên dưới), nhưng có thể được kết nối với không hoặc nhiều thùng ở tầng trên. Dung tích tối đa của mỗi thùng là \(1\) lít, và ban đầu tất cả các thùng đều rỗng. Bài giả thiết đường ống có dung tích \(0\) lít, nghĩa là chúng không chứa nước mà chỉ cho nước đi qua theo bất kỳ hướng nào.

\(Q\) truy vấn, mỗi truy vấn chứa một số nguyên \(i\) đại diện cho một thùng chứa. Đối với mỗi truy vấn, hãy đổ thêm \(1\) lít nước vào thùng chứa \(i\). Nước ở các thùng tầng trên sẽ chảy theo đường ống xuống các thùng tầng dưới cho đến khi đầy thùng, các thùng ở cùng một tầng sẽ luôn có cùng một lượng nước. Khi đổ nước vào một thùng đã đầy thì nước sẽ được đẩy lên theo đường ống lên các thùng tầng phía trên nó đều nhau.

Yêu cầu: Tìm số lượng thùng chứa đầy nước sau khi xét xong tất cả các truy vấn.

Input

  • Dòng đầu tiên chứa duy nhất một số nguyên \(T\) (\(1\leq T \leq 10\)) là số lượng testcase. Mỗi testcase trong số \(T\) testcase tiếp theo có khuôn dạng sau:
    • Dòng thứ nhất chứa hai số nguyên \(N\)\(Q\), trong đó \(N\) là số lượng thùng chứa và \(Q\) (\(1\leq Q \leq N\)) là số lượng truy vấn.
    • Mỗi dòng trong số \(N-1\) dòng tiếp theo chứa hai số nguyên \(i\)\(j\) (\(1\leq i, j \leq N\)\(i \neq j\)) nghĩa là thùng chứa thứ \(i\) được nối với thùng chứa thứ \(j\).
    • Mỗi dòng trong số \(Q\) dòng tiếp theo chứa một số nguyên \(i\) (\(1\leq i\leq N\)) đại diện cho thùng chứa 1 lít nước cần được thêm vào.

Output

  • Đối với mỗi testcase, in ra một dòng chứa duy nhất một số \(y\) là số lượng thùng chứa đầy nước sau khi xét xong tất cả các truy vấn.

Example

Test 1

Input
2
1 1
1
3 2
1 2
1 3
1
2
Output
1
1

Scoring

  • Subtask \(1\): \(1\leq N \leq 65535\), hệ thống chứa nước có dạng một cây nhị phân hoàn hảo, nghĩa là mỗi nút có \(2\) nút con và tất cả các nút lá đều nằm trên cùng một tầng.
  • Subtask \(2\): \(1\leq N \leq 10^4\)

Bình luận

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

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