pta l3-3(社交集群)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805053141925888
题意:给定n个人,以及每个人的兴趣,把有相同兴趣的人并成一个社交集群,问有多少个群,并以非递增方式输出所有群的人数。
思路:如果合并人的话,会复杂许多,这里我们可以合并兴趣,并用每个人的第一个兴趣表示其兴趣,将每个人的所有兴趣合并起来,之后遍历n个人,要统计人的群和群的人数,与将其第一兴趣的祖先所在的群的操作一致。说的有点绕,直接看代码吧,模拟模拟就懂了。
AC代码:
#include<bits/stdc++.h>
using namespace std; const int maxn=;
int n,k,q,root[maxn],res[maxn],a[maxn]; bool cmp(int x,int y){
return x>y;
} int getr(int kk){
if(root[kk]==kk) return kk;
else return root[kk]=getr(root[kk]);
} void Union(int x,int y){
int xr=getr(x),yr=getr(y);
if(xr!=yr)
root[yr]=xr;
} int main(){
scanf("%d",&n);
for(int i=;i<=;++i)
root[i]=i;
for(int i=;i<=n;++i){
int t;
scanf("%d",&k);
getchar();
scanf("%d",&t);
a[i]=t,--k;
while(k--){
scanf("%d",&t);
Union(a[i],t);
}
}
for(int i=;i<=n;++i)
++res[getr(a[i])];
for(int i=;i<=;++i)
if(res[i]) ++q;
sort(res,res+maxn,cmp);
printf("%d\n",q);
printf("%d",res[]);
for(int i=;i<q;++i)
printf(" %d",res[i]);
printf("\n");
return ;
}
pta l3-3(社交集群)的更多相关文章
- 【PTA 天梯赛】L3-003 社交集群(并查集)
当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个“社交集群”是指部分兴趣爱好相同的人的集合.你需要找出所有的社交集群. 输入格式: 输入在第一行 ...
- L3-003. 社交集群(并查集)
L3-003. 社交集群 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在社交网络平台注册时,用户通常会输入自己的兴趣爱好, ...
- PAT 天梯赛 L3-003. 社交集群 【并查集】
题目链接 https://www.patest.cn/contests/gplt/L3-003 思路 并查集 用一个 cou[i] 来表示 第 i 门课程 的第一个 感兴趣的人 并的时候 判断 cou ...
- PAT天梯赛练习题——L3-003. 社交集群(并查集按秩合并)
L3-003. 社交集群 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在社交网络平台注册时,用户通常会输入自己的兴趣爱好, ...
- L2-2 社交集群 (25 分)(一个写挫的并查集)
题目: 思路: 就是一个并查集的裸题,不过在数据查找方面可能不好处理,暴力完全可以解决这个问题啊!! #include <bits/stdc++.h> #include <cstdi ...
- 天梯L3-003. 社交集群——并查集
在社交网络平台注册时,用户通常会输入自己的兴趣爱好,以便找到和自己兴趣相投的朋友.有部分兴趣相同的人们就形成了“社交集群”.现请你编写程序,找出所有的集群. 输入格式: 输入的第一行给出正整数N(&l ...
- PAT天梯赛练习 L3-003 社交集群 (30分) DFS搜索
题目分析: 一共有N个编号为1~1000的人,以及一共有编号为1~1000种不同的兴趣,在题目给出1~N编号的人员每个人喜欢的兴趣的id后,要求统计出不同的人员集合的个数以及每个人员几个的人数从大到小 ...
- GPTL L3-003 社交集群(并查集)
数据有些弱,Union函数不判不等也可以过. 题意: 依次给出 n 个人的兴趣,不同人兴趣相交.不同兴趣所属人员相交均属于同一集群,求形成的不相交集群个数及每个集群的人数. 思路: 枚举每个兴趣的人员 ...
- 支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)
Redis作为一款性能优异的内存数据库,支撑着微博亿级社交平台,也成为很多互联网公司的标配.这里将以Redis Cluster集群为核心,基于最新的Redis5版本,从原理再到实战,玩转Redis集群 ...
随机推荐
- 完全分布式hadoop2.5.0安装 VMware下虚拟机centos6.4安装1主两从hadoop
请跟我走,从零开始搭建hadoop2.5.0环境.总览第一步:搭建三台能不用密码shh的虚拟机.第二步,装jdk,解压hadoop文件,配置环境变量和xml文件.第三步,复制克隆两个slave机器.调 ...
- SecureCRT显示乱码的解决办法
下面来看看SecureCRT的显示出现乱码这种情况.比如: 现在我们重新设置一下 设置下图中的配置 1.选择字符编码为UTF-8. 2.设置字符集为GB2312后保存好后确认退出. 3.再次测试一下.
- H5自动准备杂记
由于之前没做过UI自动化,近期准备做H5自动化,要学的东西还是很多. 1.本地debug环境:android studio + android SDK(想要调试通要关注:驱动.手机开发者模式要打开) ...
- golang执行shell命令
ommand := "echo hello” cmd := exec.Command("/bin/bash", "-c", command) byte ...
- 直接下载:Windows 10正式版官方原版镜像!
本文搜集整理微软官方发布的Windows 10正式版镜像下载链接,从RTM原始正式版开始,按照时间倒序排列,即越往上的越新. 注意:以下资源均来自于微软官方原版,ed2k可视为P2P下载链接.下载完成 ...
- 使用ubuntu远程连接windows, Connect to a Windows PC from Ubuntu via Remote Desktop Connection
from: https://www.digitalcitizen.life/connecting-windows-remote-desktop-ubuntu NOTE: This tutorial w ...
- python语言中的数据类型之元组
数据类型 元组 tuple 元组:不可变类型 用途:元组就是一个不可变的列表,当需要存不改动的值时可用元组 定义方式:在()内用逗号分隔开多个任意类型的元素 t=(1,2.2,'aa',( ...
- Centos 下安装VIM编辑器
我们在安装完Centos后,它默认的是安装了VI编辑器,VIM是没有安装的,所以我们在使用vim test.txt时会提示: vim command not found ... 这就是说明我们的Lin ...
- How to Pronounce Word vs. World
How to Pronounce Word vs. World Share Tweet Share Tagged With: Comparison, Dark L What is the differ ...
- How to Pronounce the Numbers 1 – 10
How to Pronounce the Numbers 1 – 10 Share Tweet Share Tagged With: Numbers Numbers are something you ...