杭电 5506 GT and set
来源:互联网 发布:保罗特勤淘宝 编辑:程序博客网 时间:2024/09/21 06:34
题意:
给出N个集合。每次你可以指定一个数,然后所有包含这个元素的集合可以被删掉。
问你能否经过最多L轮操作使得所有集合都被删掉。
Sample Input
2
2 1
1 1
1 2
3 2
3 1 2 3
3 4 5 6
3 2 5 6
Sample Output
NO
YES
给出N个集合。每次你可以指定一个数,然后所有包含这个元素的集合可以被删掉。
问你能否经过最多L轮操作使得所有集合都被删掉。
Sample Input
2
2 1
1 1
1 2
3 2
3 1 2 3
3 4 5 6
3 2 5 6
Sample Output
NO
YES
范围很小,直接暴力;
# include <stdio.h># include <math.h>#include<string.h>#include<algorithm>using namespace std;int mp[35][15],n,l;bool used[305];//标记删除的数字bool judge(int x)//判断该集合是否已被删除{ for(int j=1; j<=mp[x][0]; j++) if(used[mp[x][j]]) return true; return false;}bool dfs(int x,int y)//x为第几个集合,y为删除操作的次数{ if(x>=n) return true; if(judge(x)) return dfs(x+1,y);//该集合已被删除,直接搜索下一个,删除操作次数不变; if(y>=l) return false; for(int i=1; i<=mp[x][0]; i++) { used[ mp[x][i] ] = true; if( dfs(x+1,y+1) ) return true; used[ mp[x][i] ] = false; } return false;}void test(){ scanf("%d%d",&n,&l); for(int i=0; i<n; i++) { scanf("%d",&mp[i][0]); for(int j=1; j<=mp[i][0]; j++) scanf("%d",&mp[i][j]); } memset(used,false,sizeof(used)); printf(dfs(0,0)?"YES\n":"NO\n");}int main(){ int t; scanf("%d",&t); while(t--) test(); return 0;}
0 0
- 杭电 5506 GT and set
- HDU 5506(GT and set)
- 杭电5504 GT and sequence
- 杭电-5504GT and sequence
- 杭电5505 GT and numbers
- hdu 5506 GT and set(暴力)
- HDU 5506:GT and set bitset+暴力
- BestCoder Round #60 GT and set (dfs)
- DFS-bitset-hdu5506-GT and set
- 杭电acm 4268 Alice and Bob set的运用
- 杭电-5363 Key Set
- 【杭电5363】Key Set
- 【杭电 5363】Key Set
- 【杭电】[5363]Key Set
- 杭电5363Key Set
- 杭电5505GT and numbers(判断一个数通过累乘他的因子是否可以得到另一个数)
- GT and sequence 5504GT and sequence
- 5504 GT and sequence
- 杭电1180 诡异的楼梯
- Android向PHP后台传数组类型的参数似的问题
- jQuery数据缓存$.data 的使用以及源码解析
- IPV6表示
- 一次打PSU的感触
- 杭电 5506 GT and set
- mysql explain 各列的含义
- 拓扑结构相同子树练习题
- 杭电 2059 龟兔赛跑
- Android Studio集成SVN步骤及问题
- 字符串结束符'\0' -何时自动加- 字符串定义方法
- Thinkphp下使用Mysql的on duplicate key update功能
- 【MySQL】VS【SQLServer】
- iOS中 输入账户密码错误时的抖动提示