GPTL L3-003 社交集群(并查集)
2024-09-03 02:19:33
数据有些弱,Union函数不判不等也可以过。
题意:
依次给出 n 个人的兴趣,不同人兴趣相交、不同兴趣所属人员相交均属于同一集群,求形成的不相交集群个数及每个集群的人数。
思路:
枚举每个兴趣的人员,以序号最小者作为集群代表与其他成员合并,追加 cnt 数组记录每个集群的人数。
如题目输入:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
7 | 1 | 3 | 2 | 3 | 7 | 1 | 7 | 1 | |
5 | 4 | 7 | 3 | ||||||
6 | |||||||||
8 |
则存在 ( 2, 4, 6, 8 )、( 3, 5, 7 )、( 1 )三个集群。
Tips:
注意读入输入中的 ':'。
#include <bits/stdc++.h>
using namespace std; const int M=1100; int fri[M],cnt[M];
vector<int> like[M]; int Find(int x){
int f=x;
while(f!=fri[f]) f=fri[f];
int a=x,b;
while(a!=fri[a]) b=fri[a],fri[a]=f,a=b;
return f;
} void Union(int A,int B){
int friA=Find(A);
int friB=Find(B);
if(friA!=friB)
fri[friB]=friA,cnt[friA]+=cnt[friB];//friA一定小于friB
} int main()
{
for(int i=0;i<M;i++) fri[i]=i,cnt[i]=1;
int n;cin>>n;
for(int i=1;i<=n;i++){
int k;char c;cin>>k>>c;
for(int j=0;j<k;j++){
int t;cin>>t;
like[t].push_back(i);
}
}
for(int i=0;i<M;i++){
if(like[i].size()>=2){
for(int j=1;j<like[i].size();j++){
Union(like[i][0],like[i][j]);
}
}
}
vector<int> ans;
for(int i=1;i<=n;i++)
if(fri[i]==i) ans.push_back(cnt[i]);
sort(ans.begin(),ans.end(),greater<int>());
cout<<ans.size()<<endl;
for(int i=0;i<ans.size();i++)
cout<<(i?" ":"")<<ans[i];
return 0;
}
最新文章
- 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
- 使用SQL Server 2008 维护计划(图解)
- wpf图片查看器,支持鼠标滚动缩放拖拽
- error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
- zabbix3.0报错记录
- [CareerCup] 18.7 Longest Word 最长的单词
- java_easyui体系之DataGrid(3)[转]
- Minimum Size Subarray Sum
- 获取枚举Description 属性
- cdoj 1250 喵哈哈的矩阵 数学题
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
- 续前篇---数据挖掘之聚类算法k-mediod(PAM)原理及实现
- Nio学习4——EchoServer在IO,NIO,NIO.2中的实现
- C# 语言规范_版本5.0 (第18章 不安全代码)
- Mybatis(一) mybatis入门
- Linux - ansible 安装
- C# 如何获取可执行文件路径的上上级目录
- [2017BUAA软工]个人项目:数独
- BZOJ4652 NOI2016循环之美(莫比乌斯反演+杜教筛)
- Sorl搜索技术
热门文章
- Head First 设计模式 —— 14. 复合 (Compound) 模式
- Spring Boot超详细用户管理项目(零)——开发前准备
- 翻译 - ASP.NET Core 托管和部署 - 在 Linux 上使用 Nginx 托管 ASP.NET Core 网站
- Windows Server 2012 R2远程桌面默认端口修改
- 代码审计 - BugkuCTF
- buuctf—web—高明的黑客
- DockerFile关键字相关作用以及解释
- torch.optim.SGD()各参数的解释
- linux串口编程
- 转 9 jmeter之检查点