#sw. 2026提高组模拟赛09-T4 程老师的开关阵
2026提高组模拟赛09-T4 程老师的开关阵
时间限制:1500ms 内存限制:512MB
题目描述
程老师学校的配电房最近装了一套新系统: 盏灯排成一列,每盏灯有三个档位—— 表示关闭, 表示微亮, 表示全亮。灯的当前档位用一个整数表示。电工师傅说,三档是为了应付不同场合:夜里值班开微亮,检查线路开全亮,平时就关着。
配套的还有 个开关,编号也是 。这套系统的接线很特别:开关 一按下去,灯 本身,以及所有与灯 有线路相连的灯,档位都会同时加 ——已经到 的灯会回到 ,三档循环。线路图给出了 条线路,每条线路连接两盏不同的灯;线路是双向的,开关 影响灯 时,开关 也同样影响灯 。也就是说,按一下某个开关,可能一整片灯跟着变档,噼里啪啦很是热闹。
同一开关可以按任意多次,效果累积;同一个开关按满 次,等于白按——受影响的灯每盏加 ,各转一圈回到原档。所以真正要考虑的,是每个开关到底按 次、 次还是 次。另外,有些接线方案下,可能怎么按都没法让灯全部关闭,电工师傅管那叫"死局",是设计缺陷,得报修线路而不是接着瞎按。
配电房的记录本上写着每盏灯的初始档位。程老师想知道:从初始状态出发,让 盏灯全部关闭,最少一共要按多少次开关?如果办不到,输出 -1。几百个开关摆在那儿,一个一个试显然不现实——光试每种按法,配电房的门怕是都要被按坏了。
输入格式
第一行两个整数 ,表示灯的数量和线路数量。
第二行 个整数 ,,表示每盏灯的初始档位。
接下来 行,每行两个整数 ,表示一条连接灯 和灯 的线路。
输出格式
一行一个整数,表示全部关闭所需的最少总按次;如果办不到,输出 -1。
数据范围
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 1 ~ 2 | 无 | |
| 3 ~ 6 | ||
| 7 ~ 8 | A | |
| 9 ~ 10 | B | |
| 11 ~ 14 | 无 | |
| 15 ~ 20 |
- 特殊性质 A:(没有任何线路,开关 只影响灯 )。
- 特殊性质 B:线路构成一条链(灯 只与灯 、 相连,)。
- 对于全部数据,,,,,无重边。数据保证自由变量不超过 个。
样例
样例 1
输入:
3 2
1 2 0
1 2
2 3
输出:
4
解释:开关 影响灯 ;开关 影响灯 ;开关 影响灯 。一种方案:开关 按 次、开关 按 次、开关 按 次。逐灯核对:灯 被按 次( 转回 );灯 被按 次( 转回 );灯 被按 次( 转回 )。总按次 ,可以验证不存在更少的方案。
样例 2
输入:
2 1
1 1
1 2
输出:
2
解释:两个开关都同时影响两盏灯。开关 按 次:两盏灯各加 ( 转回 ),总按次 。也可以两个开关各按 次,总按次同样是 ——最少就是 。
样例 3
输入:
2 0
1 2
输出:
3
解释:没有线路,开关 只管灯 ,开关 只管灯 。灯 要加 才回到 ,灯 要加 ,总按次 。
- ID
- 670
- 类型
- 传统题
- Time Limit
- 1500ms
- Memory Limit
- 512MiB
- 上传者
相关
在下列比赛中: