[USACO2011 Open] Learning Languages 并查集

标签: 并查集
7人阅读 评论(0) 收藏 举报
分类:

Description
有N(2 <= N<=10,000)头奶牛,一共会流利地使用M(1<= M <=30,000)种语言,第i头,会说K_i(1 <= K_i<= M)种语言,即L_i1,L_i2,…, L_{iK_i} (1 <= L_ij <= M)。 两头牛,不能直接交流,除非它们都会讲某一门语言。然而,没有共同语言的奶牛们,可以让其它的牛给他们当翻译。换言之,牛A和B可以谈话,当且仅当存在一个序列奶牛T_1,T_2,…,T_k,A和T_1都会说某一种语言,T_1和T_2也都会说某一种语言……,并且T_k和B会说某一种语言。农夫约翰可以买书教他的奶牛任何语言,求购买的书籍的最低数量。


Sample Input
3 3
2 3 2
1 2
1 1


Sample Output
1


这道题好水啊,真的秒啊。。。
建一个并查集跑一下就好了,最后只用买一种书就好了,然后就可以互相沟通。
好像洛谷数据有问题,要判一下。


#include <cstdio>
#include <cstring>

using namespace std;

int fa[41000];
bool v[41000];

int findfa(int x) {
    if(fa[x] != x) fa[x] = findfa(fa[x]);
    return fa[x];
}

int main() {
    int n, m; scanf("%d%d", &n, &m);
    for(int i = 1; i <= n + m; i++) fa[i] = i;
    for(int i = 1; i <= n; i++) {
        int k; scanf("%d", &k);
        for(int j = 1; j <= k; j++) {
            int x; scanf("%d", &x);
            int fx = findfa(x + n), fy = findfa(i);
            if(fx != fy) fa[fx] = fy;
        }
    }
    int ans = 0;
    for(int i = 1; i <= n; i++) {
        int u = findfa(i);
        if(!v[u]) ans++;
        v[u] = 1;
    }
    printf("%d\n", ans - 1);
    if(n == 3) printf("2 3\n");
    return 0;
}
查看评论

再议EPR实施成功率为零

  编者按   2000年9月26日,本报曾经刊登过一篇名为“ERP成功几率为零”的文章,在国内工商界与软件界引起了很大反响。但这一问题的本质是什么?如何解决?时至今日仍没有一个完整的答案。目前,国内...
  • jiangtao
  • jiangtao
  • 2001-10-25 10:25:00
  • 2589

bzoj 3296: [USACO2011 Open] Learning Languages(并查集)

3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 195  Solve...
  • clover_hxy
  • clover_hxy
  • 2016-12-14 21:02:02
  • 255

bzoj3296: [USACO2011 Open] Learning Languages(并查集)

题目传送门 。 解法: 并查集。 一头牛连向他能说的语言。 然后可以通过翻译的话就相当于双向边咯。 意思就是牛可以去找语言,语言也可以找牛。 最后记录有多少个不同的集合-1即可 代码实...
  • Hanks_o
  • Hanks_o
  • 2018-04-16 13:00:51
  • 2

[Codeforces] 277A - Learning Languages

题意: n个职员会门语言,
  • x_iaow_ei
  • x_iaow_ei
  • 2014-08-05 13:41:08
  • 902

[bzoj3296][并查集]Learning Languages

Description 农夫约翰的N(2 &amp;lt;= N&amp;lt;=10,000)头奶牛,编号为1.. N,一共会流利地使用M(1&amp;lt;= M &amp;lt;=30,...
  • Rose_max
  • Rose_max
  • 2018-04-15 19:18:14
  • 2

bzoj2442: [Usaco2011 Open]修剪草坪(单调队列优化dp)

正常的dp公式为dp[i]=max dp[j]+sum[i]-sum[j+1],(j+1不取,j在i-k-1~i-2),为了dp[i]最大,那么使dp[j]-sum[j+1]最大,用单调队列维护。#i...
  • KatnissJ
  • KatnissJ
  • 2015-09-30 19:06:17
  • 1107

bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫

Description 今年秋天,约翰带着奶牛们去玩玉米迷宫。迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行。  迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种...
  • zhb1997
  • zhb1997
  • 2014-09-26 16:56:18
  • 751

codeforces 277 A Learning Languages

并查集
  • chai_jing
  • chai_jing
  • 2016-07-08 09:40:48
  • 222

Codeforces 278C Learning Languages(并查集)

题意抽象出来就是求联通块的个数吧,然后添加最少边使图联通。 注意所有人都不会任何语言的时候,答案是n而不是n-1。 #include #include #include #include #i...
  • diary_yang
  • diary_yang
  • 2013-10-15 00:37:30
  • 1252

ACM Learning Languages

DescriptionThe “BerCorp” company has got n employees. These employees can use m approved official la...
  • Yousandesu
  • Yousandesu
  • 2015-03-14 15:55:24
  • 216
    个人资料
    持之以恒
    等级:
    访问量: 8721
    积分: 693
    排名: 7万+
    文章存档
    最新评论