Xử lí bit cơ bản

View as PDF

Submit solution


Points: 400.00 (partial)
Time limit: 1.0s
Memory limit: 512M
Input: stdin
Output: stdout

Authors:
Problem source:
swishy's kichen
Problem type
Allowed languages
C++ (Themis), Pascal, Python

Cho một đồ thị liên thông có số cạnh nhỏ hơn số đỉnh, đỉnh thứ ~x~ có độ tuyệt vời là một số nguyên không âm ~A_x~.

Định nghĩa độ tuyệt vời của một đường đi là tổng xor (Định nghĩa của XOR) của độ tuyệt vời của tất cả các đỉnh trên đường đi đó. Độ tuyệt vời của cặp đỉnh ~(u, v)~ là tích của độ tuyệt vời của tất cả các đường đi đơn từ ~u~ đến ~v~. Vì đồ thị là liên thông, nên luôn tồn tại ít nhất một con đường giữa cặp đỉnh ~(u, v)~. Ta cũng có thể dễ dàng chứng minh được rằng có hữu hạn đường đi đơn giữa một cặp đỉnh bất kì, nên độ tuyệt vời của một cặp đỉnh ~(u, v)~ luôn tính được.

Độ tuyệt vời của một đồ thị chính là độ tuyệt vời lớn nhất của một cặp đỉnh bất kì.

Tính độ tuyệt vời của đồ thị nêu trên, cũng như số lượng cặp ~(u, v)~ (~u \leq v~) có độ tuyệt vời đúng bằng độ tuyệt vời của đồ thị.

Ví dụ

Screenshot-2024-01-14-112304

Cho đồ thị có ~N = 3~, ~M = 3~, ~A = [1, 2, 4]~ và các cạnh nối như hình minh họa trên.

  • Cặp ~(1, 1)~: Có một đường đi đơn từ ~1~ tới ~1~ là chính đỉnh ~1~. Vậy độ tuyệt vời của cặp ~(1, 1)~ là: ~1~.

  • Cặp ~(2, 2)~: Có một đường đi đơn từ ~2~ tới ~2~ là chính đỉnh ~2~. Vậy độ tuyệt vời của cặp ~(2, 2)~ là: ~2~.

  • Cặp ~(3, 3)~: Có một đường đi đơn từ ~3~ tới ~3~ là chính đỉnh ~3~. Vậy độ tuyệt vời của cặp ~(3, 3)~ là: ~4~.

  • Cặp ~(1, 2)~: Có hai đường đi đơn từ ~1~ tới ~2~ là ~1~ → ~2~ và ~1~ → ~3~ → ~2~. Vậy độ tuyệt vời của cặp ~(1, 2)~ là: ~(A_1 \oplus A_2) \times (A_1 \oplus A_3 \oplus A_2) = 21~.

  • Cặp ~(1, 3)~: Có hai đường đi đơn từ ~1~ tới ~3~ là ~1~ → ~3~ và ~1~ → ~2~ → ~3~. Vậy độ tuyệt vời của cặp ~(1, 3)~ là: ~(A_1 \oplus A_3) \times (A_1 \oplus A_2 \oplus A_3) = 35~.

  • Cặp ~(2, 3)~: Có hai đường đi đơn từ ~2~ tới ~3~ là ~2~ → ~3~ và ~2~ → ~1~ → ~3~. Vậy độ tuyệt vời của cặp ~(2, 3)~ là: ~(A_2 \oplus A_3) \times (A_2 \oplus A_1 \oplus A_3) = 42~.

Như vậy, độ tuyệt vời của đồ thị là ~42~, và có một cặp có có độ tuyệt vời bằng ~42~ là ~(2, 3)~.

Input

  • Dòng đầu tiên nhập vào hai số nguyên không âm ~N, M~ ~(M, N \leq 10^5)~, là số đỉnh và số cạnh của đồ thị.
  • Dòng thứ hai gồm ~N~ số nguyên không âm ~A_1, A_2, ..., A_N~ ~(0 \leq A_i \leq 2^{30})~.
  • ~M~ dòng tiếp theo, dòng thứ ~i~ nhập vào hai số nguyên dương ~u_i~, ~v_i~, cho biết có một cạnh nối giữa hai đỉnh ~u_i~, ~v_i~ ~(1 \leq u_i, v_i \leq N)~.
  • Dữ liệu đầu vào đảm bảo các cạnh nhập vào sẽ tạo thành một đồ thị liên thông.

Output

  • In ra kết quả của bài toán trên

Sample Input

5 4
10 0 15 2 6
1 2
2 3
2 4
3 5

Sample Output

15 2

Giải thích test mẫu:

Screenshot-2024-01-14-114110

Hình minh họa cho test ví dụ ở phần Sample Input.

Hai cặp ~(2, 3)~ và ~(3, 3)~ có độ tuyệt vời là ~15~. Đây cũng chính là độ tuyệt vời của đồ thị.

Scoring

Subtask Điểm Giới hạn
~1~ ~10 \%~ ~N,M \leq 10~
~2~ ~20 \%~ ~N,M \leq 10^4~
~3~ ~10 \%~ ~N,M \leq 10^5~ và ~A_i \leq 1, \forall 1 \leq i \leq N~
~4~ ~30 \%~ ~N,M \leq 10^5~ và ~A_i < 32, \forall 1 \leq i \leq N~
~5~ ~30 \%~ Không ràng buộc gì thêm

Comments

Please read the guidelines before commenting.


There are no comments at the moment.