很简单一个并查集的题,理解题意默写模板即可ac。

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 1010
#define MAX (1<<30)-1
#define V vector<int>using namespace std;int fa[LEN];void init(){int i;F(i,1,LEN) fa[i]=i;
}int findFa(int x){if(fa[x]==x) return x;int r=x;    //定义根while(fa[r]!=r) {r=fa[r];}//路径压缩int t=x;    //临时变量while(fa[t]!=t) {t=fa[t];    //往上层根节点走, 让循环得以完成 fa[x]=r;    //压缩路径 x=t;        //更新x
    }return r;
}void Union(int a,int b){int fa_a=findFa(a);int fa_b=findFa(b);if(fa_a!=fa_b) fa[fa_a]=fa_b;
}int hobby[LEN];
int cnt[LEN];
int n,m; int main(){
//    freopen("1107.txt","r",stdin);I("%d",&n);init();int i,j,t;F(i,1,n+1){I("%d:",&m);FF(j,m){I("%d",&t);if(hobby[t]!=0) Union(i,hobby[t]);else hobby[t]=i;}}F(i,1,n+1) cnt[findFa(i)]++;vector<int> ans;F(i,1,n+1) if(cnt[i]) ans.push_back(cnt[i]);sort(ans.begin(),ans.end());reverse(ans.begin(),ans.end());O("%d\n",ans.size());FF(i,ans.size()){O("%d",ans[i]) ;if(i!=ans.size()-1) O(" ");}return 0;
}

转载于:https://www.cnblogs.com/TQCAI/p/8534208.html

并查集 | 1107相关推荐

  1. 1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744 很不错的一个并查集的操作.你会发现我们需要处 ...

  2. 并查集(golang实现)

    对于一组数据,当要求我们检查某两个数据是否在同一集合内时,就需要并查集去实现了 如:<a,b>,<b,c>,那么很明显a.b.c都在同一集合内 实现思路: 如果我们先将输入的a ...

  3. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  4. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  5. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  6. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  7. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  8. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  9. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

最新文章

  1. ping 攻击 Linux,Linux 环境实现ping攻击
  2. 《javascript设计模式》笔记之第十章 和 第十一章:门面模式和适配器模式
  3. python领域有什么用-Python语言被广泛用在哪些领域了?
  4. VDI序曲九 实战体验Remote FX(重磅推荐)
  5. linux安装手动划分目录,Linux目录配置整理
  6. 【单片机实验】矩阵键盘
  7. 生活不可缺的46个搜索引擎
  8. C#中英文字符串固定长度换行
  9. 批量调取接口_批量操作_API 文档_对象存储 - 七牛开发者中心
  10. Android 自定义字体(otf,ttf等等)
  11. Python实现Mean Shift聚类算法
  12. linux运行mentohust,Linux中用mentohust设置联网环境
  13. python 日本 地图 热力图_【python实战】热力图——百度地图API
  14. WINRAR密码去除/破解工具
  15. 【coq】函数语言设计 笔记 01 - basics
  16. 计算机音乐谱东演员,计算机音乐谱光辉岁
  17. 各种风格404错误页面html模板源码30多套高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应。
  18. nginx-----部署集群
  19. STM32F4系列ADC最大转换速率及操作条件(以STM32F407ZGT6为例)
  20. 玩转教育计算机二级,全国计算机等级考试二级msoffice高级应用教材《玩转office轻松过二级》配套模拟软件使用说明.doc...

热门文章

  1. bottle模板中的替换
  2. Java实现Oracle导出数据到Excel
  3. Ubuntu的多文件编译以及c语言的数组、函数
  4. [Python學習筆記] 在Centos上安裝 Django
  5. MDI窗体关闭问题解决一例
  6. 我在一家通信公司上班
  7. 就在这段时间让自己充实起来
  8. 每天固定往一个银行卡存入100元,5年之后会有多大变化?有人能坚持吗?
  9. 新房装修,家里WiFi怎么弄?
  10. 老年人学摄影,装备该如何选择?