Time Limit: 5 Sec Memory Limit: 128 MB

Submit: 387 Solved: 206

[Submit][Status][Discuss]

Description

农夫约翰的N(2 <= N<=10,000)头奶牛,编号为1.. N,一共会流利地使用M(1<= M <=30,000)种语言,编号从1

.. M.,第i头,会说K_i(1 <= K_i<= M)种语言,即L_i1, L_i2,…, L_{iK_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想要购买最少的书籍,让所有他的奶牛互相可以说话。帮助他确定:*他必须购买的书籍的最低数量

Input

*第1行:两个用空格隔开的整数:N和M

*第2..N+1行:第i+1行描述的牛i的语言,K_i+1个空格隔开的整数:

K_iL_i1 L_i2,…,L_I{K_i}。

Output

*第1行:一个整数,FJ最少需要购买的书籍数量

Sample Input

3 3

2 3 2

1 2

1 1

Sample Output

1

//给三号牛买第二本书即可

解题思路

将每只牛和自己会说的语言连一条边,最后统计联通块的个数-1即为答案

代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<vector>
  5. using namespace std;
  6. const int MAXN = 200005;
  7. inline int rd(){
  8. int x=0,f=1;char ch=getchar();
  9. while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
  10. while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
  11. return x*f;
  12. }
  13. int n,m;
  14. int head[MAXN<<1],cnt;
  15. int to[MAXN<<1],nxt[MAXN<<1];
  16. vector<int> t[MAXN];
  17. int col_num;
  18. bool vis[MAXN<<1];
  19. inline void add(int bg,int ed){
  20. to[++cnt]=ed,nxt[cnt]=head[bg],head[bg]=cnt;
  21. }
  22. inline void dfs(int x){
  23. vis[x]=1;
  24. for(register int i=head[x];i;i=nxt[i]){
  25. int u=to[i];
  26. if(vis[u]) continue;
  27. dfs(u);
  28. }
  29. }
  30. int main(){
  31. n=rd();m=rd();
  32. for(register int i=1;i<=n;i++){
  33. int x=rd();
  34. for(register int j=1;j<=x;j++){
  35. int y=rd();
  36. add(i,y+10000);add(y+10000,i);
  37. }
  38. }
  39. for(register int i=1;i<=n;i++)
  40. if(!vis[i]) col_num++,dfs(i);
  41. cout<<col_num-1<<endl;
  42. return 0;
  43. }

BZOJ 3296: [USACO2011 Open] Learning Languages的更多相关文章

  1. BZOJ 3296 [USACO2011 Open] Learning Languages:并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3296 题意: 农夫约翰的N(2 <= N <= 10,000)头奶牛,编号为1 ...

  2. BZOJ——3296: [USACO2011 Open] Learning Languages

    http://www.lydsy.com/JudgeOnline/problem.php?id=3296 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit:  ...

  3. 【BZOJ】3296: [USACO2011 Open] Learning Languages(tarjan)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3296 显然,每群能交流的群是个强联通块 然后求出scc的数量,答案就是scc-1 #include ...

  4. BZOJ3296: [USACO2011 Open] Learning Languages

    3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 81  Solved: ...

  5. BZOJ3296: [USACO2011 Open] Learning Languages 并查集

    Description 农夫约翰的N(2 <= N<=10,000)头奶牛,编号为1.. N,一共会流利地使用M(1<= M <=30,000)种语言,编号从1  .. M., ...

  6. BZOJ3296:Learning Languages(简单并查集)

    3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 436  Solved ...

  7. CodeForces 277A Learning Languages (并检查集合)

    A. Learning Languages time limit per test:2 seconds memory limit per test:256 megabytes The "Be ...

  8. [Codeforces Round #170 Div. 1] 277A Learning Languages

    A. Learning Languages time limit per test:2 seconds memory limit per test:256 megabytes input standa ...

  9. C. Learning Languages 求联通块的个数

    C. Learning Languages 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring&g ...

随机推荐

  1. js 实现页面局部(或图片)放大功能(vue)

    方法: adjustStart1 (e) { e.preventDefault() let event = e.touches if (event.length === 2) { this.style ...

  2. CF #578 Div2

    // 比赛链接:https://codeforces.com/contest/1200 A - Hotelier 题意: 有一家旅馆有10间房,编号0~9,从左到右顺序排列.旅馆有左右两扇门,每次新来 ...

  3. 定时ping取返回值并绘图

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. HTML给div设置百分比高度无效的解决方式 - 库塔姆斯 - CSDN博客

    原文:HTML给div设置百分比高度无效的解决方式 - 库塔姆斯 - CSDN博客 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/HobHunter ...

  5. Elasticsearch & Kibana with Shield

    Elasticsearch & Kibana with Shield   官方网站: https://www.elastic.co/guide/en/kibana/current/produc ...

  6. tensorflow+inceptionv3图像分类网络结构的解析与代码实现

    tensorflow+inceptionv3图像分类网络结构的解析与代码实现 论文链接:论文地址 ResNet传送门:Resnet-cifar10 DenseNet传送门:DenseNet SegNe ...

  7. win8 风格框架

    http://metroui.org.ua/挺不错 bootstrap 系列的.

  8. 物理机多磁盘u盘安装centos

    材料:一枚u盘,一块120G固态硬盘和一块500G的硬盘的华硕笔记本电脑,原系统为windows10 需求:将centos7.5系统安装到固态硬盘,原系统不要了 遇到的问题:开机后进入不了装机界面 解 ...

  9. Spring_用Spring容器创建对象并给属性赋值

    创建spring配置文件:spring-config.xml.对象的创建和赋值都在这里进行配置. 创建实体类,设置属性 import java.util.List; import java.util. ...

  10. Java虚拟机原理图解-- 1.1、class文件基本组织结构 [转]

    作为Java程序猿,我们知道,我们写好的.java 源代码,最后会被Java编译器编译成后缀为.class的文件,该类型的文件是由字节组成的文件,又叫字节码文件.那么,class字节码文件里面到底是有 ...