数据有些弱,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;
}

最新文章

  1. 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
  2. 使用SQL Server 2008 维护计划(图解)
  3. wpf图片查看器,支持鼠标滚动缩放拖拽
  4. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  5. zabbix3.0报错记录
  6. [CareerCup] 18.7 Longest Word 最长的单词
  7. java_easyui体系之DataGrid(3)[转]
  8. Minimum Size Subarray Sum
  9. 获取枚举Description 属性
  10. cdoj 1250 喵哈哈的矩阵 数学题
  11. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
  12. 续前篇---数据挖掘之聚类算法k-mediod(PAM)原理及实现
  13. Nio学习4——EchoServer在IO,NIO,NIO.2中的实现
  14. C# 语言规范_版本5.0 (第18章 不安全代码)
  15. Mybatis(一) mybatis入门
  16. Linux - ansible 安装
  17. C# 如何获取可执行文件路径的上上级目录
  18. [2017BUAA软工]个人项目:数独
  19. BZOJ4652 NOI2016循环之美(莫比乌斯反演+杜教筛)
  20. Sorl搜索技术

热门文章

  1. Head First 设计模式 —— 14. 复合 (Compound) 模式
  2. Spring Boot超详细用户管理项目(零)——开发前准备
  3. 翻译 - ASP.NET Core 托管和部署 - 在 Linux 上使用 Nginx 托管 ASP.NET Core 网站
  4. Windows Server 2012 R2远程桌面默认端口修改
  5. 代码审计 - BugkuCTF
  6. buuctf—web—高明的黑客
  7. DockerFile关键字相关作用以及解释
  8. torch.optim.SGD()各参数的解释
  9. linux串口编程
  10. 转 9 jmeter之检查点