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 nm 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 uivi 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

  • 1t500000
  • 1n,m500000
  • 1ci1012
  • 1ui,vin
  • Đồ 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 24 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 12 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 34 không kề đỉnh trái nào nên không bao giờ thuộc N(S), các giá trị 1521 bị bỏ qua. Test 2: hai đỉnh phải 12 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0