(DFS) hdu 2208

唉,可爱的小朋友

Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1137    Accepted Submission(s): 309

Problem Description

唉,小朋友是比较麻烦的。在一个幼儿园里,老师要上一节游戏课,有N个小朋友要玩游戏,做游戏时要用小皮球,但是幼儿园里只有M个小皮球,而且有些小朋友不喜欢和一些小朋友在一起玩,而只喜欢和另一些小朋友一起玩,比如傻妞只喜欢和傻瓜,傻根,傻蛋们一起玩,傻根又不喜欢和傻蛋一起玩,傻蛋喜欢和傻子一起玩。所以老师只好把他们分组,每个组至少有一个小球可以玩,而且每个组内不会有两个小朋友,相互不喜欢。现在给你这样一个幼儿园里小朋友之间关系的描述,做为老师,是否可以上好这节游戏课。

Input

数据有多个case,每个case先输入两个值N(1<=N<=10)和M(1<=M<=10),表示有N个小朋友(从0到N-1标号),和M个小皮球。接着有N行,第i行先输入一个K(0<=K<N),表示第i个小朋友有喜欢一起玩的其他小朋友的个数,然后后面有K个整数,表示K个小朋友的标号(不重复)。如果A喜欢和B一起玩,则B也喜欢和A一起玩,这个数据在输入时保证。两个case之间有空行

Output

对于每个case,如果老师可以上好课,输出YES,否则NO。

Sample Input

3 2
2 1 2
2 2 0
2 0 1

Sample Output

YES

Author

wangye

#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
using namespace std;
int n,m,mp[15][15],root[15];
bool dfs(int x,int cnt)
{
    if(cnt>m) return false;
    if(x==n) return true;
    for(int i=0;i<x;i++)
    {
        if(root[i]!=i) continue;
        bool flag=true;
        for(int j=i;j<x&&flag;j++)
        {
            if(root[j]==i) flag=mp[j][x];
        }
        if(flag)
        {
            root[x]=i;
            if(dfs(x+1,cnt))
                return true;
            root[x]=x;
        }
    }
    if(dfs(x+1,cnt+1))
        return true;
}
int main()
{
    int x,y;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(mp,0,sizeof(mp));
        for(int i=0;i<n;i++)
        {
            scanf("%d",&x);
            for(int j=0;j<x;j++)
            {
                scanf("%d",&y);
                mp[i][y]=1;
                //mp[y][i]=1;
            }
        }
        for(int i=0;i<n;i++)
            root[i]=i;
        if(dfs(0,0)||n<=m)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

  

时间: 2024-12-07 21:26:58

(DFS) hdu 2208的相关文章

D - DFS HDU - 2660

D - DFS HDU - 2660 I have N precious stones, and plan to use K of them to make a necklace for my mother, but she won't accept a necklace which is too heavy. Given the value and the weight of each precious stone, please help me find out the most valua

变形课(DFS hdu 1181)

变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 19133    Accepted Submission(s): 6892 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规

(水DFS) hdu 5024

D - Wang Xifeng's Little Plot Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 5024 Appoint description:  System Crawler  (2015-04-14) Description <Dream of the Red Chamber>(also <The Sto

DFS HDU 1342

很水的DFS Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1515    Accepted Submission(s): 752 Problem Description In a Lotto I have ever played, one has to select 6 numbers from the set {1,2

(dfs) hdu 2258

Continuous Same Game (1) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 465    Accepted Submission(s): 176 Problem Description Continuous Same Game is a simple game played on a grid of colored

DFS HDU 2614

很水的.但是wa了很多遍,因为写num[1][1]... 改成0之后就过了...虽然不知道为什么... Beat Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 659    Accepted Submission(s): 415 Problem Description Zty is a man that always full of

DFS/hdu 1010 Tempter of the Bone

题意 给出一个n*m的地图,s:起点,d:终点,x:障碍物,.:可以走的格子 给出一个时间t,求问是否可以恰好用t时间从起点走到终点.走一步为一个时间. 注意:走过的格子不能再走 注意2:是在时间t刚好到达,而不是时间t以内!也就是说可以在地图上绕远,反正就要在时间t到达! 分析 很普通的深搜,但是有2点剪枝: 1.在刚读入数据后剪枝:当可以走的格子本来就比时间t还短时,必然无法在t时间走到终点 1 if (m*n-xx<=t) //xx is the number of 'X' 2 { 3 p

hdu 2208 唉,可爱的小朋友

Problem Description 唉, 小朋友是比较麻烦的.在一个幼儿园里,老师要上一节游戏课,有N个小朋友要玩游戏,做游戏时要用小皮球,但是幼儿园里只有M个小皮球,而且有些小朋友不喜 欢和一些小朋友在一起玩,而只喜欢和另一些小朋友一起玩,比如傻妞只喜欢和傻瓜,傻根,傻蛋们一起玩,傻根又不喜欢和傻蛋一起玩,傻蛋喜欢和傻子一起玩. 所以老师只好把他们分组,每个组至少有一个小球可以玩,而且每个组内不会有两个小朋友,相互不喜欢.现在给你这样一个幼儿园里小朋友之间关系的描述,做为 老师,是否可以上

(dfs) hdu 2821

Pusher Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/65536 K (Java/Others)Total Submission(s): 956    Accepted Submission(s): 348Special Judge Problem Description PusherBoy is an online game http://www.hacker.org/push . There is an R