题目描述
题目译自 PA 2024 Runda 5 Żarówki,感谢 Macaronlin 提供翻译
有 n 个灯泡,每个灯泡有两种状态:开和关,初始状态是给定的。有 m 个开关,每个开关控制两个灯泡,按下开关可以使这两个灯泡变为与目前状态相反的状态,只有在两个灯泡有相同状态时才起作用,否则不起作用。
你可以随意安排开关的使用顺序和使用次数,问利用这些开关可以实现多少种配置方案。灯泡在一种配置中打开而在另一种配置中关闭,则两种配置被视为不同。
输入格式
第一行两个整数 n 和 m (1≤n≤200,000,0≤m≤400,000),表示灯泡和开关的个数。
第二行 n 个整数 ci (ci∈0,1),如果 ci=1,则初始时第 i 个灯泡是打开的,如果 ci=0,则初始时第 i 个灯泡是关闭的。
接下来 m 行,每行两个整数 ai,bi (1≤ai,bi≤n,ai=bi),描述一个开关。
保证开关会影响不同的无序灯泡对。形式化地,∀i,j∈1,2,…,m,i=j,都有 (ai,bi)=(aj,bj) 且 (ai,bi)=(bj,aj)。
输出格式
输出一行一个整数,表示利用这些开关可以实现多少种配置方案。输出对 109+7 取模。
样例:
5 4
1 0 1 1 0
1 3
5 3
4 2
1 5
4
所有可以实现的配置方案为:10110,00010,00111 和 10011。
数据规模与约定
对于 100 的数据:
1≤n≤2×105
0≤m≤4×105
ci∈0,1
1≤ai,bi≤n,ai=bi