7-90 社交集群 (30分)--详解
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分)--详解相关推荐
- C++学习之路 | PTA(天梯赛)—— L3-003 社交集群 (30分) (带注释) (并查集) (精简)
L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集 ...
- 【CCCC】L3-003 社交集群 (30分),并查集模板,map排序
problem L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣 ...
- 7-7 社交集群 (30 分) (集合数组的方法)
题目描述 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集合.你需要找出所有的社交集 ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
- 运维工程师必备之负载 均衡集群及LVS详解
原文地址:运维工程师必备之负载 均衡集群及LVS详解作者:蚁巡运维平台 来源: chrinux 的BLOG 时间: 2013-07-01 14:00 此博文主要介绍集群和负载均衡的基本理论和类别,内容 ...
- Linux 高可用(HA)集群之Pacemaker详解
大纲 说明:本来我不想写这篇博文的,因为前几篇博文都有介绍pacemaker,但是我觉得还是得写一下,试想应该会有博友需要,特别是pacemaker 1.1.8(CentOS 6.4)以后,pacem ...
- 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 ...
- Kafka单机、集群模式安装详解(二)
本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. ...
- nc 模拟服务器_NC集群服务器使用详解
NC 集群服务器使用详解 NC220 发版时,对中间件做了一项重大改进,对集群服务器应用提供了全面解决方案 的支持, 使产品更加能够适应集团企业的大规模应用. 本文力争以通俗的语言, 描述集群服 务器 ...
最新文章
- python使用matplotlib可视化、移除可视化图像坐标轴的刻度线和标签( remove the default axis ticks and labels)
- 6. Qt 信号与信号槽(8)实例分析
- SpringBoot入门教程(十五)集成Druid
- mysql relay log时间_如何得到Slave应用relay-log的时间
- IOS之Xcode之快捷键
- python外汇兑换代码_python爬取人民币汇率中间价
- css复合选择器 1205
- c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
- 公募权益类基金投资者盈利洞察报告
- Delphi7--多分支Case语句
- APP推广运营手册全集
- 4g/5g信号远程遥控小车解决方案二
- itest windows客户端数据库破解
- arcgis批量裁剪影像tif流程_【ArcGIS自定义脚本工具】批量裁剪中国多省份NDVI影像...
- 微信对账单 java_微信下载对账单
- python的xlwt模块_Python xlwt模块
- 两万用户的项目需要多大服务器,两万左右服务器配置
- USB-HDD和USB-ZIP制作U盘启动盘有什么区别?
- 净重新分类指数NRI的计算
- BUUCTF Misc 被嗅探的流量