并查集 | 1107
很简单一个并查集的题,理解题意默写模板即可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相关推荐
- 1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744 很不错的一个并查集的操作.你会发现我们需要处 ...
- 并查集(golang实现)
对于一组数据,当要求我们检查某两个数据是否在同一集合内时,就需要并查集去实现了 如:<a,b>,<b,c>,那么很明显a.b.c都在同一集合内 实现思路: 如果我们先将输入的a ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法
tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...
- POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树
一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...
- 【BZOJ1015】【JSOI2008】星球大战 并查集
题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...
- 并查集 HDOJ 1232 畅通工程
题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...
最新文章
- ping 攻击 Linux,Linux 环境实现ping攻击
- 《javascript设计模式》笔记之第十章 和 第十一章:门面模式和适配器模式
- python领域有什么用-Python语言被广泛用在哪些领域了?
- VDI序曲九 实战体验Remote FX(重磅推荐)
- linux安装手动划分目录,Linux目录配置整理
- 【单片机实验】矩阵键盘
- 生活不可缺的46个搜索引擎
- C#中英文字符串固定长度换行
- 批量调取接口_批量操作_API 文档_对象存储 - 七牛开发者中心
- Android 自定义字体(otf,ttf等等)
- Python实现Mean Shift聚类算法
- linux运行mentohust,Linux中用mentohust设置联网环境
- python 日本 地图 热力图_【python实战】热力图——百度地图API
- WINRAR密码去除/破解工具
- 【coq】函数语言设计 笔记 01 - basics
- 计算机音乐谱东演员,计算机音乐谱光辉岁
- 各种风格404错误页面html模板源码30多套高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应。
- nginx-----部署集群
- STM32F4系列ADC最大转换速率及操作条件(以STM32F407ZGT6为例)
- 玩转教育计算机二级,全国计算机等级考试二级msoffice高级应用教材《玩转office轻松过二级》配套模拟软件使用说明.doc...