题库练习 最少学习费用
← 上一题 下一题 →

A6268 | 最少学习费用

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

“BerCorp” 公司有 $n$ 名员工。这些员工可以使用 $m$ 种被批准的官方语言进行正式交流。
语言用整数 $1 \sim m$ 编号。

对于每一位员工,我们知道 TA 当前会的语言列表,这个列表可能为空(即有的员工现在不会任何官方语言)。
不过好消息是:员工们都愿意学习新的语言,只要公司替他们付学费。每名员工学习一门语言的费用为 $1$ 伯币,同一个人可以学多门语言,费用按门数累加。

如果两位员工会的语言中有至少一门是相同的,就认为他们可以直接交流。
如果员工 $A$ 可以和员工 $B$ 交流,员工 $B$ 可以和员工 $C$ 交流,那么也认为 $A$ 可以通过 $B$ 间接和 $C$ 交流。

现在,公司想花尽量少的钱,让**任意一位员工都能(直接或间接)与任何其他员工进行交流**。

请你计算公司至少需要花费多少伯币。

输入格式

第一行包含两个整数 $n$ 和 $m$($2 \le n,m \le 100$),分别表示员工人数和官方语言的数量。

接下来 $n$ 行,第 $i$ 行描述第 $i$ 位员工现在会的语言:

- 这一行的第一个整数为 $k_i$($0 \le k_i \le m$),表示第 $i$ 位员工会的语言个数;
- 接下来有 $k_i$ 个整数 $a_{i1}, a_{i2}, \dots, a_{ik_i}$($1 \le a_{ij} \le m$),表示这些语言的编号。

保证同一名员工的语言列表中不会出现重复的语言编号。
注意,可能存在 $k_i = 0$ 的员工(即目前不会任何官方语言)。

同一行中相邻两个整数之间用一个空格隔开。

输出格式

输出一个整数,表示为了让任意两名员工都可以(直接或间接)交流所需要花费的最少总费用。

输入输出样例

输入 #1
5 5
1 2
2 2 3
2 3 4
2 4 5
1 5
输出 #1
0
输入 #2
8 7
0
3 1 2 3
1 1
2 5 4
2 6 7
1 3
2 7 4
1 1
输出 #2
2
输入 #3
2 2
1 2
0
输出 #3
1
C++ 编辑器
输入
输出