#10029. RBTREE - Cây đỏ đen

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Nguyễn Hoàng Sơn

Đề bài

Nguồn: Contest anh Hạnh

Cây là một đồ thị vô hướng liên thông và không có chu trình. Một cây có n đỉnh luôn luôn có đúng n - 1 cạnh. Giữa hai đỉnh bất kì của cây, có một và chỉ một đường đi đơn duy nhất. Đường đi đơn là đường đi chỉ đi qua mỗi đỉnh và mỗi cạnh không quá một lần.

Cho một cây gồm n đỉnh. Các đỉnh được đánh số từ 1 đến n . Mỗi đỉnh được tô bởi một trong hai màu đỏ hoặc đen. Ta định nghĩa một vùng cùng màu trên cây là một tập hợp S các đỉnh của cây thỏa mãn các tính chất sau:

  • Tính đơn màu: Mọi đỉnh trong tập S đều cùng một màu.
  • Tính liên thông: Với mọi cặp đỉnh x y sao cho , tồn tại một đường đi từ x đến y chỉ đi qua các đỉnh thuộc S .
  • Tính cực đại: Không tồn tại cách thêm một đỉnh vào tập S sao cho tập S vẫn thỏa mãn hai tính chất trên. Dễ dàng thấy được trong mọi thời điểm, mỗi đỉnh trên cây thuộc một và chỉ một vùng cùng màu. Bạn muốn tất cả các đỉnh trên cây đều có cùng màu. Để làm được điều này, bạn được thực hiện thao tác sau: Chọn một đỉnh u trên cây, đổi màu tất cả các đỉnh thuộc vùng cùng màu chứa đỉnh u từ đỏ thành đen và ngược lại.

Hãy tìm số thao tác tối thiểu cần thực hiện để tất cả các đỉnh trên cây có cùng màu.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên θ và T (1 \leq θ \leq 4, 1 \leq T \leq 10^9) , lần lượt là số thứ tự của subtask chứa test và số bộ dữ liệu có trong file input này.

Tiếp theo là T bộ dữ liệu, mỗi bộ dữ liệu được mô tả theo khuôn dạng sau đây:

  • Dòng đầu tiên là một dòng trống.
  • Dòng thứ hai chứa số nguyên n (1 ≤ n ≤ 2.10^5) là số đỉnh của cây.
  • Dòng thứ ba chứa n số nguyên c_1, c_2, ..., c_n (0 ≤ c_i ≤ 1) thể hiện màu của các đỉnh trên cây ở thời điểm ban đầu. Trong đó, c_i = 0 thể hiện đỉnh i có màu đỏ, c_i = 1 thể hiện đỉnh i có màu đen.
  • Trong n - 1 dòng còn lại, mỗi dòng chứa hai số nguyên u v (1 ≤ u, v ≤ n) cho biết trên cây có một cạnh nối hai đỉnh u v .

Tổng giá trị của n trong tất cả các bộ dữ liệu của một file input không quá 10^6 .

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên là số thao tác ít nhất cần thực hiện để tất cả các đỉnh trên cây có cùng màu.

Ví dụ

//Input
1 2

11
0 0 0 1 1 0 1 0 0 1 1
1 2
1 3
2 4
2 5
5 6
5 7
3 8
3 9
3 10
9 11

4
0 0 0 0
1 2
2 3
3 4


//Output
2 0 

Giới hạn

  • Subtask 1 (30 điểm): n \leq 15 \sum n \leq 300
  • Subtask 2 (20 điểm): n \leq 2500 \sum n \leq 25000
  • Subtask 3 (20 điểm): n \leq 200000 \sum n \leq 1000000 . Mọi đỉnh của cây đều có bậc nhỏ hơn 3
  • Subtask 4 (30 điểm): n \leq 200000 \sum n \leq 1000000