A3774 「OOI 2020 Day 2」方便面

暂无评定 传统题 国际知名赛事 上传者
时间限制2000ms
内存限制512MiB
通过 / 提交0/0

A3774「OOI 2020 Day 2」方便面

暂无评定 传统题 国际知名赛事 上传者
时间限制2000ms
内存限制512MiB
通过 / 提交0/0

题目描述

题目译自 Open Olympiad in Informatics 2020 Day2 T3 「Лапша быстрого приготовления / Instant Noodles」。

吴在激烈的训练后感到饥饿,于是前往最近的商店购买他最喜欢的方便面。在结账后,收银员给他提出了一个有趣的问题。

给定一个二分图,其中 右侧 部分的顶点上写有正整数。对于 左侧 部分顶点的子集 SS,定义 N(S)N(S) 为右侧部分中与 SS 中至少一个顶点相邻的顶点集合,f(S)f(S) 为 N(S)N(S) 中顶点上数字的和。要求找出所有可能的非空子集 SS 对应的 f(S)f(S) 的最大公约数。

吴在训练中太过疲惫,无法解决这个问题。请帮助他!

输入格式

第一行包含一个整数 tt (1≤t≤500000)(1 \leq t \leq 500000),表示需要解决的输入数据组数。接下来是输入数据的描述。

每组输入数据的第一行包含两个整数 nn 和 mm (1≤n,m≤500000)(1 \leq n, m \leq 500000),分别表示图中每个部分的顶点数量和边的数量。

第二行包含 nn 个整数 cic_i (1≤ci≤1012)(1 \leq c_i \leq 10^{12}),第 ii 个数字表示右侧部分第 ii 个顶点上的值。

接下来的 mm 行包含一对整数 uiu_i 和 viv_i (1≤ui,vi≤n)(1 \leq u_i, v_i \leq n),表示左侧部分第 uiu_i 个顶点与右侧部分第 viv_i 个顶点之间的一条边。保证图中没有重边。

输入数据之间用空行分隔。保证所有输入数据中 nn 的总和不超过 500000500000,mm 的总和也不超过 500000500000。

输出格式

对于每组输入数据,输出一个数字,即所需的最大公约数。

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

最大公约数是指一组数字中的最大整数 gg,使得该组中的所有数字都能被 gg 整除。

在第一组输入数据中,左侧部分的所有顶点与右侧部分的所有顶点都通过边相连,因此对于任何非空子集,f(S)f(S) 的值均为 22,所以最大公约数也为 22。

在第二组输入数据中,左侧部分的子集 {1}\{1\} 与右侧部分的顶点 {1,2}\{1, 2\} 相连,其值的和为 22;而左侧部分的子集 {1,2}\{1, 2\} 与右侧部分的顶点 {1,2,3}\{1, 2, 3\} 相连,其值的和为 33。因此,f({1})=2f(\{1\}) = 2,f({1,2})=3f(\{1, 2\}) = 3,这意味着所有 f(S)f(S) 的最大公约数为 11。

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 备注
11 2121 n≤20n \leq 20,m≤400m \leq 400,∑n≤100\sum n \leq 100,∑m≤2000\sum m \leq 2000
22 3333 n≤5000n \leq 5000,m≤5000m \leq 5000,∑n≤10000\sum n \leq 10000,∑m≤10000\sum m \leq 10000
33 4646