#sw. 2026提高组模拟赛09-T4 程老师的开关阵

2026提高组模拟赛09-T4 程老师的开关阵

时间限制:1500ms 内存限制:512MB

题目描述

程老师学校的配电房最近装了一套新系统:nn 盏灯排成一列,每盏灯有三个档位——00 表示关闭,11 表示微亮,22 表示全亮。灯的当前档位用一个整数表示。电工师傅说,三档是为了应付不同场合:夜里值班开微亮,检查线路开全亮,平时就关着。

配套的还有 nn 个开关,编号也是 1n1 \sim n。这套系统的接线很特别:开关 jj 一按下去,jj 本身,以及所有与灯 jj 有线路相连的灯,档位都会同时加 11——已经到 22 的灯会回到 00,三档循环。线路图给出了 mm 条线路,每条线路连接两盏不同的灯;线路是双向的,开关 jj 影响灯 kk 时,开关 kk 也同样影响灯 jj。也就是说,按一下某个开关,可能一整片灯跟着变档,噼里啪啦很是热闹。

同一开关可以按任意多次,效果累积;同一个开关按满 33 次,等于白按——受影响的灯每盏加 33,各转一圈回到原档。所以真正要考虑的,是每个开关到底按 00 次、11 次还是 22 次。另外,有些接线方案下,可能怎么按都没法让灯全部关闭,电工师傅管那叫"死局",是设计缺陷,得报修线路而不是接着瞎按。

配电房的记录本上写着每盏灯的初始档位。程老师想知道:从初始状态出发,让 nn 盏灯全部关闭,最少一共要按多少次开关?如果办不到,输出 -1。几百个开关摆在那儿,一个一个试显然不现实——光试每种按法,配电房的门怕是都要被按坏了。

输入格式

第一行两个整数 n,mn, m,表示灯的数量和线路数量。

第二行 nn 个整数 s1,s2,,sns_1, s_2, \ldots, s_nsi{0,1,2}s_i \in \{0, 1, 2\},表示每盏灯的初始档位。

接下来 mm 行,每行两个整数 u,vu, v,表示一条连接灯 uu 和灯 vv 的线路。

输出格式

一行一个整数,表示全部关闭所需的最少总按次;如果办不到,输出 -1

数据范围

测试点编号 nn \le 特殊性质
1 ~ 2 1212
3 ~ 6 1616
7 ~ 8 300300 A
9 ~ 10 B
11 ~ 14 100100
15 ~ 20 300300
  • 特殊性质 A:m=0m = 0(没有任何线路,开关 jj 只影响灯 jj)。
  • 特殊性质 B:线路构成一条链(灯 ii 只与灯 i1i-1i+1i+1 相连,m=n1m = n - 1)。
  • 对于全部数据,1n3001 \le n \le 3000mn(n1)20 \le m \le \dfrac{n(n-1)}{2}1u,vn1 \le u, v \le nuvu \ne v,无重边。数据保证自由变量不超过 1010 个。

样例

样例 1

输入

3 2
1 2 0
1 2
2 3

输出

4

解释:开关 11 影响灯 1,21, 2;开关 22 影响灯 1,2,31, 2, 3;开关 33 影响灯 2,32, 3。一种方案:开关 1111 次、开关 2211 次、开关 3322 次。逐灯核对:灯 11 被按 22 次(1+2=31+2=3 转回 00);灯 22 被按 44 次(2+4=62+4=6 转回 00);灯 33 被按 33 次(0+3=30+3=3 转回 00)。总按次 1+1+2=41+1+2=4,可以验证不存在更少的方案。

样例 2

输入

2 1
1 1
1 2

输出

2

解释:两个开关都同时影响两盏灯。开关 1122 次:两盏灯各加 221+2=31+2=3 转回 00),总按次 22。也可以两个开关各按 11 次,总按次同样是 22——最少就是 22

样例 3

输入

2 0
1 2

输出

3

解释:没有线路,开关 11 只管灯 11,开关 22 只管灯 22。灯 11 要加 22 才回到 00,灯 22 要加 11,总按次 2+1=32+1=3

难度 省选/NOI-
通过率 33.3%
尝试 6
已通过 2
ID
670
类型
传统题
Time Limit
1500ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-S模拟赛 第2场