学语言
时间限制:1秒 内存限制:256M
【问题描述】
农夫约翰的 \(N\) 头奶牛,编号为 \(1\sim N\),一共会流利地使用 \(M\) 种语言,编号从 \(1\sim M\)。第 \(i\) 头,会说 \(K_i\)(\(1 ≤ K_i ≤ M\)) 种语言,即 \(L_{i_1}, L_{i_2},…,L_{i_{K_i}}\) (\(1 ≤ L_{ij} ≤ M\))。
FJ的奶牛不太聪明,所以 \(K_i\) 的总和至多为 100,000。两头牛,不能直接交流,除非它们都会讲某一门语言。然而,没有共同语言的奶牛们,可以让其它的牛给他们当翻译。换言之,牛 \(A\) 和 \(B\) 可以谈话,当且仅当存在一个序列奶牛 \(T_1,T_2,…,T_k\),\(A\) 和 \(T_1\) 都会说某一种语言,\(T_1\) 和 \(T_2\) 也都会说某一种语言……,并且 \(T_k\) 和 \(B\) 会说某一种语言。
农夫约翰希望他的奶牛更加团结,所以他希望任意两头牛之间可以交流。他可以买书教他的奶牛任何语言。作为一个相当节俭的农民,FJ想要购买最少的书籍,让所有他的奶牛互相可以说话。帮助他确定:*他必须购买的书籍的最低数量
【输入格式】
第 \(1\) 行:两个用空格隔开的整数:\(N\) 和 \(M\)。
第 \(2..N+1\) 行:第 \(i+1\) 行描述的牛 \(i\) 的语言,\(K_i+1\) 个空格隔开的整数:$K_i,L_{i_1}, L_{i_2},…,L_{i{K_i}}。
【输出格式】
一个整数,FJ最少需要购买的书籍数量。
【输入输出样例】
Input
3 3
2 3 2
1 2
1 1
Output
1
【输入输出样例解释】
给三号牛买第二本书即可。
【数据说明】
对于 \(100\%\) 的数据 \(1 ≤ N ≤ 10000\),\(1 ≤ M ≤ 30000\)
【来源】
Mr.he