Description
有n个灯泡,初始状态都是关着的,有m次操作,每次打开一些灯泡,如果灯泡已经被打开那么再次操作后灯泡还是打开的,问操作完后所有灯泡是否能够全部打开
Input
第一行为两个整数m和n表示操作数和灯泡数量,之后m行首先输入一个整数num表示这次要打开多少灯泡,之后输入num个整数表示打开的灯泡编号(1<=n,m<=100)
Output
如果所有灯泡都能被打开则输出YES,否则输出NO
Sample Input
3 4
2 1 4
3 1 3 1
1 2
Sample Output
YES
Solution
水题,开一个标记数组即可
Code
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 111
int n,m,flag[maxn];
int main()
{
while(~scanf("%d%d",&m,&n))
{
memset(flag,0,sizeof(flag));
while(m--)
{
int num,temp;
scanf("%d",&num);
while(num--)
{
scanf("%d",&temp);
flag[temp]=1;
}
}
int mark=1;
for(int i=1;i<=n;i++)
if(!flag[i])
{
mark=0;
break;
}
if(mark)printf("YES\n");
else printf("NO\n");
}
return 0;
}