题目:


临沂大学有很多社团,一个学生可能会加入多个社团。为了活跃大学生业余生活,增强体育运动积极性,临沂大学读书社团决定举行大学生跳绳比赛,要求该社团成员必须参加。为了扩大影响,要求只要其他社团有一个人参加,那么该社团中的每一个人都必须参加。求参加比赛至少多少人?

输入格式:

输入第一行包含两个整数n和m,n(0 < n <= 30000)表示学生的数目,m(0 <= m <= 500)表示社团的数目。每个学生都有一个唯一的编号,编号取值为0到n-1,编号为0的社团是读书社团。 接下来有m个社团的名单,每个社团的名单在输入中为一行。每一行先输入一个数k表示社团总人数。接着是社团中k个成员的编号。

输出格式:

输出一个数占一行,表示参加比赛的总人数。

输入样例:

100 4 
2 1 2 
5 10 13 11 12 14 
2 0 1 
2 99 2 
输出样例:

4

解题思路:


并查集,注意要让同一个集合内的所有结点的父亲直接指向集合的根,否则find_father起来会有很多重复的操作,超时!!

更新find_father(int x)的写法:

原写法:

int findfather(int x)
{while(x!=father[x])x=father[x];return x;
}

新的写法:!!!

int find_father(int x)
{int fx = father[x];return x == fx ? x : father[x] = find_father(fx);
}

Union函数能不调用尽量不调用,否则会段溢出或者超时!

ac代码:


#include <bits/stdc++>
#define maxn 30005
#define inf 0x3fffffff
using namespace std;
typedef long long ll;
int father[maxn];
int find_father(int x)
{int fx = father[x];return x == fx ? x : father[x] = find_father(fx);
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);int n,m,k,t,x,c,ans=0,vis[maxn];memset(vis,0,sizeof(vis));scanf("%d %d",&n,&m);for(int i=0;i<n;i++)father[i]=i;for(int i=0;i<m;i++){scanf("%d %d",&k,&x);int fx=find_father(x);vis[x]=1;if(i==0) t=x;for(int j=1;j<k;j++){scanf("%d",&c);vis[c]=1;int fc=find_father(c);if(fc!=fx)//main内写,避免调用,超时father[fc]=fx;}}int ft=find_father(t);for(int i=0;i<n;i++)if(vis[i]){if(ft==find_father(i))ans++;}printf("%d\n",ans);return 0;
}

【天梯选拔月赛】参与者人数(并查集模版题!remember find_father写法!)相关推荐

  1. 畅通工程(并查集模版题)

    题意: 多组输入N,M,当N为0退出人输入,N是道路数目,M是村庄总数,随后N行,每行输入三个数两个村庄的编号,以及连接这两个村庄的费用. 对每一组数据输出畅通工程的最低费用,如果不能畅通就输出&qu ...

  2. PAT题解-1118. Birds in Forest (25)-(并查集模板题)

    如题... #include <iostream> #include <cstdio> #include <algorithm> #include <stri ...

  3. 【SCAU 新生赛】18247 aler的旅游计划 并查集模板题

    18247 aler的旅游计划 该题有题解 时间限制:1000MS 代码长度限制:10KB 提交次数:15 通过次数:0 收入:10 题型: 编程题 语言: 不限定 Description aler想 ...

  4. 战争来临(并查集模板题)

    战争来临(并查集模板题) 描述   那一个骑单车卖报纸的少年 恐慌的眼泪慢慢布满了侧脸----<战争世界>   B国对A国发动了侵略战争,A国不得不全力抵御.A国幅员辽阔,后方群众的支援补 ...

  5. 并查集模板题(stl 中map的运用)

    DongDong认亲戚 DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程的 ...

  6. [NOI2002] 银河英雄传说(带权并查集好题)

    题解: 用两个变量来维护: 1.sz[i]维护第i列元素的个数 2.pre[x]维护第x元素到当前队首的距离. 在并查集是不断维护这两个值. 至于如何维护看下图和文字解释 当然,这样维护还是不够的,对 ...

  7. 【算法】并查集刷题总结

    目录 P1396 营救 题目描述 "咚咚咚--""查水表!"原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门-- 妈妈下班回家, ...

  8. How Many Answers Are Wrong HDU - 3038(带权并查集经典题,满满的都是注释)

    How Many Answers Are Wrong HDU - 3038  点击打开链接 题意:现在有n个数(你并不知道这n个数是什么),m次查询,每次查询给出u,v,w.表示从第u个数到第v个数的 ...

  9. 【模板】并查集 两种路径压缩写法(类模板和函数模板)

    并查集函数模板写法: #include <bits/stdc++.h> using namespace std; typedef long long ll; #define MAX_N 1 ...

  10. 【POJ - 1182】 食物链(附超详细讲解)(并查集--种类并查集经典题)

    题干: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.  ...

最新文章

  1. python分类算法_用Python实现KNN分类算法
  2. 内存稳定性测试_内存条选择两条8G还是单条16G?通过对比浅谈该如何选择
  3. Docker Registry本地私有仓库搭建
  4. SpringBoot从入门到精通教程
  5. 越混越差的十个原因,看看你有没有?
  6. 对比会声会影与剪映哪个制作转场效果更专业
  7. 关于KX混响插件:REVERB R详解
  8. 在python中datetime使用中如何识别上月同期日期
  9. mayapython常用模块_Maya入门之在Maya 中使用 Python 的基础知识有那些
  10. 东数西算,浪潮云在枢纽节点提供服务
  11. 使注册用户名时不能包含特殊符号
  12. 二十九、K8s最小服务漏洞3-gVisor沙箱
  13. 判断二叉树是否是平衡二叉树
  14. C++字符,字符串,数字,小写,大写的相互转化
  15. 维度表和事实表的含义
  16. DebugView 简单使用
  17. 具体的数据库存储过程的编写
  18. RPA-艺赛旗iS-RPA Studio 9.0 Beta 现已发布
  19. 1-丁基-3-甲基咪唑双三氟甲基磺酰亚胺([BMIm] NTf2)离子液体修饰Ni镍纳米颗粒的介绍
  20. 海蜘蛛软路由-转载收藏

热门文章

  1. ubuntu shell 直接输入密码
  2. unity使用屏幕后处理实现闪烁特效,创建新的shader文件过程
  3. python xpath爬虫_[爬虫]python下的xpath清洗数据之html数据清洗
  4. python语言数值操作符_Python之组合数据类型、逻辑操作符、控制流语句、算术操作符...
  5. php printf 和sprintf,深入浅析php中sprintf与printf函数的用法及区别
  6. python reduce函数怎么用_python内置函数reduce
  7. JavaScript中字符串相关总结(附实例)
  8. RecyclerView Widget 使用
  9. RestTemplate 发送文件
  10. ADO.NET 数据库操作类