Mì ăn liền

Đề bài

Mô tả

Cho một đồ thị hai phía: nửa trái gồm n đỉnh được đánh số từ 1 đến n, nửa phải cũng gồm n đỉnh được đánh số từ 1 đến n. Mỗi đỉnh i của nửa phải mang một số nguyên dương ci.

Với một tập con S khác rỗng các đỉnh của nửa trái, ký hiệu N(S) là tập tất cả các đỉnh của nửa phải kề với ít nhất một đỉnh thuộc S, và f(S) là tổng các số ghi trên những đỉnh thuộc N(S).

Hãy tìm ước chung lớn nhất của f(S) trên tất cả các tập con S khác rỗng của nửa trái.

Nếu N(S) rỗng thì f(S)=0; quy ước ước chung lớn nhất của tập rỗng bằng 0, và gcd(x,0)=x.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số lượng test.
  • Mỗi test bắt đầu bằng dòng chứa hai số nguyên n và m là số đỉnh của mỗi nửa và số cạnh của đồ thị.
  • Dòng tiếp theo chứa n số nguyên c1,c2,…,cn là các số ghi trên các đỉnh của nửa phải.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên ui và vi mô tả một cạnh nối đỉnh ui của nửa trái với đỉnh vi của nửa phải.

Các test có thể được ngăn cách bởi dòng trống.

Dữ liệu ra

Với mỗi test, in ra trên một dòng ước chung lớn nhất cần tìm.

Ràng buộc

  • 1≤t≤500000
  • 1≤n,m≤500000
  • 1≤ci≤1012
  • 1≤ui,vi≤n
  • Đồ thị không chứa cạnh lặp.
  • Tổng n trên tất cả các test không vượt quá 500000, tổng m trên tất cả các test cũng không vượt quá 500000.

Ví dụ

Input Output Giải thích
3
2 4
1 1
1 1
1 2
2 1
2 2
3 4
1 1 1
1 1
1 2
2 2
2 3
4 7
36 31 96 29
1 2
1 3
1 4
2 2
2 4
3 1
4 3
2
1
12
Test 1: mỗi đỉnh trái đều kề với cả hai đỉnh phải nên f(S)=2 với mọi S. Test 2: f({1})=c1+c2=2 còn f({1,2})=3, nên đáp án là 1. Test 3: đỉnh phải 1 kề đúng tập {3} (tổng 36), hai đỉnh phải 2 và 4 cùng kề tập {1,2} (tổng 31+29=60), đỉnh phải 3 kề tập {1,4} (tổng 96); gcd(36,60,96)=12.
2
4 4
6 10 15 21
1 1
2 1
1 2
2 2
3 2
12 18 7
1 1
1 2
16
30
Test 1: hai đỉnh phải 1 và 2 cùng kề tập {1,2} nên luôn xuất hiện cùng nhau trong N(S), đóng góp 6+10=16; hai đỉnh phải 3 và 4 không kề đỉnh trái nào nên không bao giờ thuộc N(S), các giá trị 15 và 21 bị bỏ qua. Test 2: hai đỉnh phải 1 và 2 cùng kề tập {1}, tổng bằng 30; đỉnh phải 3 bị cô lập.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0