7-90 社交集群 (30分)

当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友。一个“社交集群”是指部分兴趣爱好相同的人的集合。你需要找出所有的社交集群。

输出格式:
首先在一行中输出不同的社交集群的个数。随后第二行按非增序输出每个集群中的人数。数字间以一个空格分隔,行末不得有多余空格。

输入样例:
8
3: 2 7 10
1: 4
2: 5 3
1: 4
1: 3
1: 4
4: 6 8 1 5
1: 4
输出样例:
3
4 3 1

思路
开始把问题想复杂了。其实直接可以:每一个人用第一个兴趣编号作为代表,将一个人的兴趣编号用并查集和并起来,这样有相同兴趣的人就被分在了一个组,然后遍历每一个人,查找他的兴趣的父亲节点,然后用一个计数数组技术便可以得到每个圈子有多少人,不为零的个数就是圈子个数。

#include<bits/stdc++.h>
using namespace std;
int p[1009], user[1009], hobby[1009]; int find(int x){  //找祖先 if(p[x] == x){return x;}return p[x] = find(p[x]);
}void merge(int x, int y){  //合并 int xx = find(x), yy = find(y);if(xx != yy){p[yy] = xx;}
}bool cmp(int x, int y){  //因为题目说非曾序,所以两个数相等时不用交换顺序 return x > y;
}int main()
{for(int i=1; i<=1000; i++){p[i] = i;}int n,k,h,num=0;char ch;cin >> n;for(int i=1; i<=n; i++){cin >> k >> ch >> user[i]; //user[i]:用第一个兴趣来代表每一个人 for(int j=1; j<=k-1; j++){cin >> h;merge(user[i], h);}}for(int i=1; i<=n; i++){hobby[find(user[i])]++;  //计算每个圈子多少人 }for(int i=1; i<=1000; i++){if(hobby[i]!=0) num++;  //统计圈子个数 }sort(hobby, hobby+1001, cmp);cout << num << endl;for(int i=0; i<num; i++){if(i!=0) cout << " ";cout << hobby[i];}return 0;
}

7-90 社交集群 (30分)--详解相关推荐

  1. C++学习之路 | PTA(天梯赛)—— L3-003 社交集群 (30分) (带注释) (并查集) (精简)

    L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集 ...

  2. 【CCCC】L3-003 社交集群 (30分),并查集模板,map排序

    problem L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣 ...

  3. 7-7 社交集群 (30 分) (集合数组的方法)

    题目描述 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集合.你需要找出所有的社交集 ...

  4. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  5. 运维工程师必备之负载 均衡集群及LVS详解

    原文地址:运维工程师必备之负载 均衡集群及LVS详解作者:蚁巡运维平台 来源: chrinux 的BLOG 时间: 2013-07-01 14:00 此博文主要介绍集群和负载均衡的基本理论和类别,内容 ...

  6. Linux 高可用(HA)集群之Pacemaker详解

    大纲 说明:本来我不想写这篇博文的,因为前几篇博文都有介绍pacemaker,但是我觉得还是得写一下,试想应该会有博友需要,特别是pacemaker 1.1.8(CentOS 6.4)以后,pacem ...

  7. 04_Flink-HA高可用、Standalone集群模式、Flink-Standalone集群重要参数详解、集群节点重启及扩容、启动组件、Flink on Yarn、启动命令等

    1.4.Flink集群安装部署standalone+yarn 1.4.1.Standalone集群模式 1.4.2.Flink-Standalone集群重要参数详解 1.4.3.集群节点重启及扩容 1 ...

  8. Kafka单机、集群模式安装详解(二)

    本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. ...

  9. nc 模拟服务器_NC集群服务器使用详解

    NC 集群服务器使用详解 NC220 发版时,对中间件做了一项重大改进,对集群服务器应用提供了全面解决方案 的支持, 使产品更加能够适应集团企业的大规模应用. 本文力争以通俗的语言, 描述集群服 务器 ...

最新文章

  1. python使用matplotlib可视化、移除可视化图像坐标轴的刻度线和标签( remove the default axis ticks and labels)
  2. 6. Qt 信号与信号槽(8)实例分析
  3. SpringBoot入门教程(十五)集成Druid
  4. mysql relay log时间_如何得到Slave应用relay-log的时间
  5. IOS之Xcode之快捷键
  6. python外汇兑换代码_python爬取人民币汇率中间价
  7. css复合选择器 1205
  8. c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
  9. 公募权益类基金投资者盈利洞察报告
  10. Delphi7--多分支Case语句
  11. APP推广运营手册全集
  12. 4g/5g信号远程遥控小车解决方案二
  13. itest windows客户端数据库破解
  14. arcgis批量裁剪影像tif流程_【ArcGIS自定义脚本工具】批量裁剪中国多省份NDVI影像...
  15. 微信对账单 java_微信下载对账单
  16. python的xlwt模块_Python xlwt模块
  17. 两万用户的项目需要多大服务器,两万左右服务器配置
  18. USB-HDD和USB-ZIP制作U盘启动盘有什么区别?
  19. 净重新分类指数NRI的计算
  20. BUUCTF Misc 被嗅探的流量

热门文章

  1. 上海市大学生CTF(华东杯CTF) Crypto 全解
  2. polyfit多项式拟合函数的用法
  3. 成都python数据分析师职业技能_合格大数据分析师应该具备的技能
  4. Map 和ConcurrentMap 线程不安全和线程安全证明
  5. MysqlSql数据库事务特性
  6. NTP时间戳和UTC时间戳互转及其原理
  7. jack server无法启动
  8. 获取realsense内参
  9. 大数据时代,数据实时同步解决方案的思考—最全的数据同步总结
  10. coursera python证书_Coursera证书|三天零基础Python编程入门