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

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

输入在第一行给出一个正整数 N(≤1000),为社交网络平台注册的所有用户的人数。于是这些人从 1 到 N 编号。随后 N 行,每行按以下格式给出一个人的兴趣爱好列表:
K
​i
​​ : h
​i
​​ [1] h
​i
​​ [2] … h
​i
​​ [K
​i
​​ ]
其中K
​i
​​ (>0)是兴趣爱好的个数,h
​i
​​ [j]是第j个兴趣爱好的编号,为区间 [1, 1000] 内的整数。
输出格式:

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

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<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 1002;
int course[maxn]{ 0 };//存储该兴趣爱好的人编号
int pre[maxn]{ 0 };
vector<int>v(maxn);//存储不同社交集群的人数
int find(int x)//并查集模板,查找
{while (x != pre[x]) x = pre[x];return x;
}
void merge(int a, int b)//并查集模板,合并
{int x = find(a);int y = find(b);if (x != y) pre[x] = y;
}
bool cmp(int a, int b)//自定义排序
{return a > b;//加条件回报段错误
}
int main()
{int n, k, value;//value存储兴趣爱好编号for (int i = 1; i < maxn; i++) pre[i] = i;//初始化pre数组cin >> n;for (int i = 1; i <= n; i++){cin >> k;getchar();for (int j = 0; j < k; j++){cin >> value;if (course[value] == 0) course[value] = i;//如果该兴趣爱好还没有划分组,进行另它为i号人的兴趣,course[value]=i;else merge(i, course[value]);//否则,将i和course[value]的人编号合并。}}int count = 0;//存储集群数for (int i = 1; i <= n; i++){int fa = find(i);//查找老大if (v[fa] == 0) count++;//如果没被访问过(人员为0),集群数加一v[fa]++;//人员数加加}cout << count << endl;sort(v.begin()+1, v.end(), cmp);//降序int flag = 0;//第一个数不能是空格for (int i = 1; i <= count; i++){if (v[i] != 0){if (flag++ == 0)cout << v[i];else cout << " " << v[i];}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家重点研发计划高新领域 “智能机器人、网络协同制造和智能工厂”重点专项2018年度项目申报指南建议

来源&#xff1a;机器人创新生态概要&#xff1a; 针对我国网络协同制造和智能工厂发展模式创新不足、技术能力尚未形成、融合新生态发展不足、核心技术/软件支撑能力薄弱等问题。征求意见时间为2018年2月8日至2018年2月22日。电子邮箱&#xff1a;重点专项名称邮箱地址智能机器…

Replace Delegation with Inheritance(以继承取代委托)

两个类之间使用委托关系&#xff0c;并经常为整个接口编写许多极简单的委托函数 重构&#xff1a;让委托类继承受托类

C++学习之路 | PTA(天梯赛)—— L2-024 部落 (25分)(带注释)(并查集)(精简)

L2-024 部落 (25分) 在一个社区里&#xff0c;每个人都有自己的小圈子&#xff0c;还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里&#xff0c;于是要请你统计一下&#xff0c;在一个给定社区中&#xff0c;到底有多少个互不相交的部落&#xff1f;并且检…

人造神经元计算速度超过人脑

来源&#xff1a;《科学进展》概要&#xff1a;一种以神经元为模型的超导计算芯片&#xff0c;能比人脑更高效快速地加工处理信息。一种以神经元为模型的超导计算芯片&#xff0c;能比人脑更高效快速地加工处理信息。近日刊登于《科学进展》的新成果&#xff0c;或许将成为科学…

[导入]将Byte数组转化为String

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/24/1539848.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/24/816232.html

Command 和 Active Object 模式

Command 和 Active Object 模式 Command 模式是封装了一个没有任何变量的函数。 public interface Command {public void do(); } 简单的Command 打印机工作流 开启/关闭继电器—RelayOnCommand、RelayOffCommand&#xff1b; 开启/关闭发动机—MotorOnCommand、MotorOffC…

C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)

L2-013 红色警报 (25分) 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序&#xff0c;当失去一个城市导致国家被分裂为多个无法连通的区域时&#xff0c;就发出红色警报。注意&#xff1a;若该国本来就不完全连通&#xff0c;是分裂的k个区域&#xff0c;而…

成员函数指针作为参数是,静态函数和非静态函数的区别

成员函数指针作为参数时&#xff0c;静态函数和非静态函数的区别 举个 QT 的例子&#xff08;没学过QT的也不要紧&#xff0c;这适用于学习C的同学&#xff09;&#xff0c;当我有两个类&#xff0c;Teacher 类和 Student 类。现在有一个场景就是&#xff0c;Teacher 类会发出…

谷歌云TPU服务正式全面开放:「AlphaGo背后的芯片」进入商用化

来源&#xff1a;机器之心概要&#xff1a;作为科技巨头的谷歌早已把这种高度定制化产品应用在了自己的服务器中&#xff0c;而本周一&#xff0c;谷歌宣布其他公司马上也将可以享受新型芯片带来的计算服务了。2016 年 5 月&#xff0c;谷歌向世人发布了一款特别的机器学习专属…

linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz

不同的 Linux 之间 copy 文件通常有4种方法 1.ftp2.samba服务3.sftp4.scp 前三种方法都比较繁琐&#xff0c;最简单的方法就是 scp scp scp 本地用户名IP地址:文件名1 远程用户名IP地址:文件名2 [本地用户名IP地址:] 可以不输入,可能需要输入远程用户名所对应的密码.可能有…

Server.Transfer 和Response.Redirect 比较

作者&#xff1a;卡尔穆尔 原著&#xff1a;Developer.com 翻译&#xff1a;陈梦 如果你读过很多行业杂志和 ASP.NET 示例&#xff0c;你会发现&#xff0c;大多数人使用 Response.Redirect 将用户引导到另一个页面&#xff0c;而另一些人好像偏爱于神秘的 Server.Transfer&…

C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)

L2-010 排座位 (25分) 布置宴席最微妙的事情&#xff0c;就是给前来参宴的各位宾客安排座位。无论如何&#xff0c;总不能把两个死对头排到同一张宴会桌旁&#xff01;这个艰巨任务现在就交给你&#xff0c;对任何一对客人&#xff0c;请编写程序告诉主人他们是否能被安排同席。…

波士顿动力新年视频第一发,机器人狗能为朋友开门了!

来源&#xff1a;36氪概要&#xff1a;波士顿动力公司的那只黄色机器人狗SpotMini&#xff0c;你还记得吗&#xff1f;波士顿动力公司的那只黄色机器人狗SpotMini&#xff0c;你还记得吗&#xff1f;它上一次亮相是在去年11月&#xff0c;当时它还在一片后院的草地上恣意奔跑。…

Template Method 和 Strategy 模式

Template Method 和 Strategy 模式

Makefile详解——从入门到精通

转自ChinaUnix&#xff0c;作者gunguymadman&#xff0c;陈皓。链接地址&#xff1a;http://www.chinaunix.net/jh/23/408225.html 陈皓 CSDN 博客&#xff1a;http://blog.csdn.net/haoel/article/details/2886 http://blog.csdn.net/ruglcc/article/details/7814546 写的相…

实现了HTTP多线程下载

不是使用每连接一线程的技术&#xff0c;而是使用多路复用技术。作了一个分配算法。第一个HTTP Request返回取得ContentLength之后&#xff0c;如果使用多个连接下载&#xff0c;则需要一个分配算法&#xff0c;分配每个Request所对应的Range。分配的部分可能是一个连续的块&am…

C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产&#xff0c;请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤1000&#xff09;&#xff0c;随后N行&#xff0c;每行按下列格式给出一个…

是时候不把智能手机叫做电话了:移动AI时代来临!

来源&#xff1a;EET电子工程专辑概要&#xff1a;全新的iPhone X集成了用于人脸识别的神经引擎&#xff0c;但这仅仅是一个开始。全新的iPhone X集成了用于人脸识别的神经引擎&#xff0c;但这仅仅是一个开始。嵌入式神经引擎和专用智能处理器在边缘设备上实现了人工智能(AI)&…

C#中MSMQ消息队列测试疑问

今天我通过C#程序向某台机器发送MQ消息队列,并且已经将目标机器的消息队列设置消息存储限额无限制.我持续的把消息发送到目标机器上,发现只能发送1000条消息,其他的消息无法接收到!!!于是我尝试通过程序把消息队列的一些消息删除掉,最后发现消息队列又多了起来,但是到1000条的时…

Facade 和 Mediator 模式

Facade 和 Mediator 模式