Content
有 \(n\) 个灯,一开始它们都是关着的。有 \(m\) 个按钮,每个按钮可以开 \(k\) 盏灯。求能否通过这 \(m\) 个按钮使得所有灯全部都开着。
数据范围:\(1\leqslant n,m\leqslant100,k\leqslant n\)。
Solution
只要所有的按钮按下去能使所有灯开那就可以使所有灯开,否则一定不能使所有灯开。因此,我们需要开个 \(vis\) 数组,来存储每个按钮开的灯,最后看是否把所有的灯都开了。
Code
#include <cstdio>
using namespace std;
int n, m, k, x, vis[107];
int main() {
scanf("%d%d", &m, &n);
for(int i = 1; i <= m; ++i) {
scanf("%d", &k);
for(int j = 1; j <= k; ++j) {
scanf("%d", &x);
vis[x] = 1;
}
}
for(int i = 1; i <= n; ++i) if(!vis[i]) return printf("NO"), 0;
return printf("YES"), 0;
}