小明的灯泡(并查集plus.3)——知道你很急但你先别急

文章描述了一个编程挑战,小明和他的同学们在游乐园的解谜屋里遇到难题。他们需要通过操作控制灯泡亮灭的开关来点亮所有灯泡。题目给出了输入格式和输出要求,包括灯泡和开关的数量,以及它们之间的关系。提供的C++代码示例利用并查集算法检查是否存在点亮所有灯泡的方案。
摘要由CSDN通过智能技术生成

题目描述

放假了,小明和同学们来到了游乐园,开始了他们美好的假期。

可爱的小明在平时总喜欢吹嘘自己,总说自己才是人群中最靓的仔,是全班同学的指挥中心。同学们不满小明的傲娇,于是在他们买过门票后,来到解谜屋,想为难一下小明。

进入解密屋后,他们来到第一个关卡。这是一个狭窄的房间,紧锁的门上有n个灯泡(编号从1开始),有些灯是亮着的,有些灯是熄灭的。墙上有m个开关,这些开关控制着灯泡的亮暗,每个开关会控制若干灯泡,当你按下开关时,对应的灯泡如果是亮的,就会熄灭,如果是灭的,就会亮起。且每个灯泡一定会被两个开关控制。游客可以操作这些开关,尝试是否可以点亮所有灯泡。

只有点亮所有的灯泡才能打开门进入下一关。你能帮助一脸懵逼的小明,告诉他能否通关吗?

输入格式

第一行,一个正整数T,为数据的组数。

每组数据的第一行,有两个正整数 n 和 m , n 是灯泡的数量,m 是开关的数量。

每组数据的第二行 n 个0到1之间的数,分别表示每个灯泡的状态,0 表示灯泡是灭的,1 表示灯泡是亮的。

再接下来 m 行,每行第一个数 x 表示第 i 个开关控制的灯泡数,再接着有 x 个不重复的数字ai,分别表示所控制的灯泡编号 。

输出格式

每组数据输出一行,为:“YES"或者"NO"

YES表示存在一种方案能点亮所有的灯泡,NO为不能。

注意大小写,不带引号

样例输入

1

3 4

1 0 0

2 1 2

1 2

2 1 3

1 3

样例输出

YES

提示

先按第一个开关,此时第一盏灯会熄灭,第二盏灯会亮起。

再按第三个开关,三盏灯都会亮起。

1 <= T <= 5

1 <= x,ai <= n

对于10%的数据,1 <= m,n <= 10

对于30%的数据,1 <= m,n <= 1,000

对于50%的数据,1 <= m,n <= 10,000

对于100%的数据,1 <= m,n <= 100,000

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tang_7777777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值