比赛场次 382
比赛名称 动规
比赛状态 已结束比赛成绩
开始时间 2017-06-18 19:00:00
结束时间 2017-06-18 18:00:00
开放分组 全部用户
注释介绍
题目名称 安排公牛
输入输出 examnine.in/out
时间限制 4000 ms (4 s)
内存限制 64 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分

安排公牛

★★☆   输入文件:examnine.in   输出文件:examnine.out   简单对比
时间限制:4 s   内存限制:64 MiB

【题目描述】

Farmer Johnson的公牛们非常喜欢打篮球。但它们都不愿意一起打篮球,因为所有公牛都认为其他的牛弱爆了。Farmer Johnson有N头牛(我们把它们编号为1~N)和M个牛棚(我们把它们编号为1~M),这些牛棚就是公牛们的篮球场。但FJ的公牛非常挑剔,它们只会在自己喜欢的牛棚打球,并且都不愿意和其他的牛共享牛棚。

因此安排他的公牛对Farmer Johnson来说是一项艰难的任务,他希望得到你的帮助。当然,找到一种方案是容易的,但你的任务是找出一共有多少种方案。

一个方案是一种使得所有公牛都能在它喜欢的牛棚中快乐玩耍,并且没有两只牛共享一个牛棚的安排方式。

答案不会超过32位无符号整数范围。(其实用unsigned int 会溢出,懒得改数据了,直接用unsigned int就好了,别用long long!)

【输入格式】

输入文件的第一行有两个正整数N,M(1<=N,M<=20)。

接下来有N行,第i行的开头有一个正整数P(1<=P<=M),代表第i头牛喜欢的牛棚数量。接下来有P个正整数,即P个牛棚的编号。

【输出格式】

输出一行一个正整数,即方案总数。

【样例输入】

3 4
2 1 4
2 1 3
2 2 4

【样例输出】

4

【来源】

北京大学 POJ 2441