Tin học trẻ 2023 - Chung kết - Giá trị vượt trội

Xem dạng PDF

Gửi bài giải

Điểm: 80,00 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho một cây gồm ~n~ đỉnh với đỉnh ~1~ làm gốc. Mỗi ~1 \le i \le n~ có một số nguyên ~c_i~ gọi là màu của đỉnh ~i~. Bạn cần xử lý ~q~ truy vấn thuộc một trong hai dạng sau:

  1. "1 u x": Thay đổi màu của đỉnh ~u~ thành ~x~, nghĩa là ~c_u = x~;

  2. "2 k u1 u2 ... u_k": Xét tập hợp gồm màu của các đỉnh nằm trong các cây con ~u_1, u_2, \dots, u_k~ (các đỉnh xuất hiện nhiều lần được tính nhiều lần). Gọi số lượng phần tử của tập là ~S~, tìm màu vượt trội trong tập này, cụ thể là màu xuất hiện nhiều hơn ~S/2~ lần.

Input

  • Dòng đầu gồm hai số nguyên ~n~ và ~q~ ~(1 \le n, q \le 10^6)~;

  • Dòng thứ hai gồm ~n~ số nguyên dương ~c_1, c_2, \dots, c_n~ ~(1 \le c_i \le n)~;

  • Mỗi dòng trong ~n-1~ dòng tiếp theo gồm hai số nguyên ~u~ và ~v~ ~(1 \le u, v \le n)~ thể hiện có cạnh nối giữa ~u~ và ~v~ trên cây.

  • Mỗi dòng trong ~q~ dòng tiếp theo là một truy vấn thuộc một trong hai dạng đã mô tả.

Dữ liệu đảm bảo tổng các giá trị ~k~ của các truy vấn loại 2 không vượt quá ~10^6~.

Output

Đối với mỗi truy vấn loại 2, ghi ra màu vượt trội hoặc -1 nếu không tồn tại.

Scoring

Gọi ~S_k~ là tổng ~k~ qua các truy vấn loại 2.

Subtask Điểm Ràng buộc
1 ~10~ ~n, S_k \le 500; c_i \le 10~
2 ~10~ ~n, S_k \le 5000; c_i \le 10~
3 ~20~ ~n, S_k \le 100000; c_i \le 10~
4 ~20~ ~n, S_k \le 100000~
5 ~20~ Không có truy vấn loại 1
6 ~20~ Không có điều kiện gì thêm

Sample Input 1

5 3
1 2 3 1 2
1 2
2 3
3 4
4 5
2 2 1 2
1 3 2
2 2 1 2

Sample Output 1

-1
2

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.