博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ-3296: [USACO2011 Open] Learning Languages (并查集)
阅读量:6977 次
发布时间:2019-06-27

本文共 1770 字,大约阅读时间需要 5 分钟。

3296: [USACO2011 Open] Learning Languages

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 256  Solved: 135
[][][]

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_i L_i1 
        L_i2,...,L_I{K_i}。

 

Output

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

 

 

 

 

 

Sample Input

3 3
2 3 2
1 2
1 1

Sample Output

1

HINT

 

给三号牛买第二本书即可

 

Source

将每头牛和语言连边,跑冰茶几,答案为最后的联通块的数量-1
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 const int MAX=4e4+5; 5 int n,m,fa[MAX],ap[MAX],ans; 6 inline int read(){ 7     int an=0,x=1;char c=getchar(); 8     while (c<'0' || c>'9') {
if (c=='-') x=-1;c=getchar();} 9 while (c>='0' && c<='9') {an=(an<<3)+(an<<1)+c-'0';c=getchar();}10 return an*x;11 }12 int getfather(int x){ return fa[x]==x?x:fa[x]=getfather(fa[x]);}13 int main(){14 freopen ("cow.in","r",stdin);freopen ("cow.out","w",stdout);15 int i,j,x,y;16 n=read(),m=read();17 for (i=1;i<=n+m;i++) fa[i]=i;18 for (i=1;i<=n;i++){19 x=read();20 for (j=1;j<=x;j++){21 y=read();22 int tx=getfather(i);23 int ty=getfather(y+n);24 if (tx!=ty) fa[ty]=tx;25 }26 }27 for (i=1;i<=n;i++) ap[getfather(i)]++;28 for (i=1;i<=n;i++) if (ap[i]) ans++;29 printf("%d",ans-1);30 return 0;31 }

 

转载于:https://www.cnblogs.com/keximeiruguo/p/7766483.html

你可能感兴趣的文章
FTP与TFTP的区别
查看>>
Zookeeper迁移(扩容/缩容)
查看>>
jQuery中的Ajax----03
查看>>
思科生成树命令之debug spanning-tree(本文转载自:www.91ccie.coml
查看>>
精品软件 推荐 瑞星 杀毒软件 安全软件
查看>>
精品软件 推荐 硬盘物理序列号修改专家
查看>>
tomcat简单配置
查看>>
Ansible基础一Playbook(二)
查看>>
MySQL5.6.16二进制源码安装详解及一键安装实现
查看>>
好久没有更新了!
查看>>
Netscaler 认证,访问报http 5000 内部错误
查看>>
Tomcat:Connection reset by peer: socket write error
查看>>
ARP(Accounting Resource Planning)项目感想
查看>>
Linux系统基础-管理之用户、权限管理
查看>>
Nginx(二) 配置与调试
查看>>
A first look at Xync Lync client on iOS iPhone/iPad
查看>>
iphone越狱神器
查看>>
HashSet 详解
查看>>
C++中public、protect和private用法区别
查看>>
LVM逻辑卷的缩减与删除,LVM逻辑卷快照,btrfs文件系统,网络管理
查看>>