1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744
很不错的一个并查集的操作。你会发现我们需要处理的是对于每一个人,它的所有的兴趣都是在一个集合中的故将所有的集合都合并。
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
map<int,int>mp;
int n,m,p[N],cnt[N],x;
set<int>st;//是用来去重的存一下,所有的感兴趣的点
int find(int x)
{if(x!=p[x]) p[x]=find(p[x]);return p[x];
}
int main(void)
{cin>>n;for(int i=1;i<=1000;i++) p[i]=i;for(int i=1;i<=n;i++){vector<int>ve;scanf("%d:",&m);for(int j=0;j<m;j++){cin>>x; ve.push_back(x);st.insert(x);}for(int j=1;j<ve.size();j++)//将这些点(兴趣)合并为一个集合{if(p[find(ve[j])]!=find(ve[0])){cnt[find(ve[0])]+=cnt[find(ve[j])];p[find(ve[j])]=find(ve[0]);}}cnt[find(ve[0])]++;//将这个人加入到集合中}vector<int>ans;for(auto i=st.begin();i!=st.end();i++) if(!mp[find(*i)]) ans.push_back(cnt[find(*i)]),mp[find(*i)]=1;sort(ans.begin(),ans.end());cout<<ans.size()<<endl;for(int i=ans.size()-1;i>=0;i--) {if(ans[i]) cout<<ans[i];if(i) cout<<" ";}return 0;
}
1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】相关推荐
- PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 凭爱好,分人群.注意点:爱好可传递.什么意思?意思是A和B的有共同爱好1, B和C有共同爱好2,那么认为A和C也是同一群人. 按照爱 ...
- 1034 Head of a Gang (30 分) 【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805456881434624 首先不难想到的是并查集,不过这里有一个关键的 ...
- 1114 Family Property (25 分)【难度: 中/ 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805356599820288 挺好的一个并查集,先读入然后再处理.注意:在 ...
- 关于算法中的并查集,写的很有意思,转过来看看~
文章来自于:http://blog.csdn.net/niushuai666/article/details/6662911 例子就是杭电上的畅通工程: http://acm.hdu.edu.cn/s ...
- 分珠(dfs+并查集)
1140 分珠 时间限制:500MS 内存限制:65536K 提交次数:24 通过次数:18 题型: 编程题 语言: G++;GCC Description 如下图所示,有若干珠子,每颗珠子重量 ...
- 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
一:前言 本题需要用到并查集的知识,建议先学完并查集后再看看本题 二:题目 题目给出一个无向连通图,要求求出其最小生成树的权值. 温馨提示:本题请使用kruskal最小生成树算法. 输入格式: 第一行 ...
- 给我三分钟,带你领略热血江湖中的并查集算法
你好,我是小黄,一名独角兽企业的Java开发工程师. 校招收获数十个offer,年薪均20W~40W. 感谢茫茫人海中我们能够相遇, 俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习 ...
- 1143 Lowest Common Ancestor (30 分)【难度: 中 / 知识点: 最低公共祖先 未完成】
https://pintia.cn/problem-sets/994805342720868352/problems/994805343727501312
- 1072 Gas Station (30 分)【难度: 中 / 知识点: Dijkstra + 枚举】
https://pintia.cn/problem-sets/994805342720868352/problems/994805396953219072 题目说的不清不楚,应该直接说要建一个加油站, ...
最新文章
- 可重构人工智能设备展现出智能化前景
- git reset --hard 恢复
- php mysql log文件,mysql log文件【读书笔记1】_MySQL
- java的imshow方法_imshow窗口是截止的
- 算法学习总结(三):插入排序
- 【计算机系统设计】学习笔记(1)03,04
- linux 卸载 1.6,在linux上卸载nump1.6.1并安装nump1.5.1,[它将要使用gipsyoasi II version6]...
- Java回调网址_极光短信- 回调接口 - 极光文档
- Maven3.8.1下载
- 跑步机上的精彩人生——Linus大神传奇
- 入门 Android Lint
- Mybatis Plus基础06 mapperLocations配置(指定Mapper.xml文件路径)
- 记录一下自己配置Tomcat(9.0.69)
- Leetcode_1823_找出游戏的获胜者_约瑟夫环
- 2021 csp-s
- DOS窗口中使用的命令行
- C++中eof(),bad(),fail(),good(),clear()
- 02-时间相关电位ERP的认识
- linux驱动开发: wm8960 codec代码分析
- 区块链游戏当下的市场