PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数
文章目录
- 题目分析
- 题目链接
题目分析
来源:acwing
分析: 凭爱好,分人群。注意点:爱好可传递。什么意思?意思是A和B的有共同爱好1, B和C有共同爱好2,那么认为A和C也是同一群人。
按照爱好将人分成几组。使用vector<int> hobby[N];
二维数组:<爱好,人>
ac代码
#include<bits/stdc++.h>
using namespace std;
const int N =1010;
int p[N];
vector<int> hobby[N]; //二维数组:<爱好,人>
int n;
int cnt[N]; //统计集合人数,不同根结点代表不同的集合int find(int x){if(p[x] != x) p[x] = find(p[x]);return p[x];
}int main(){cin >> n;for(int i =0; i<n; i++){int cnt;scanf("%d:",&cnt);while(cnt--){int h;cin >> h;hobby[h].push_back(i); }}for(int i =0; i<n; i++) p[i] =i;//相同爱好的人合并在一起//实现爱好的传递性。喜欢1的是一群人,其中有B,B还喜欢2,喜欢2的又是一群人,通过B,就把这两群人合并在一起了。for(int i =1; i<= 1000 ;i++){for(int j = 1; j< hobby[i].size(); j++){int a= hobby[i][0], b= hobby[i][j];p[find(b)] = find(a);}}//遍历每个人,每个人都有根结点,相同根结点的是同一个集合。//统计每个集合里面的人数for(int i =0; i<n; i++) cnt[find(i)] ++;sort(cnt,cnt+n, greater<int>());//求集合个数int k = 0;while(cnt[k]) k++;cout<< k<<endl;//输出集合的人数cout<<cnt[0];for(int i =1; i<k; i++) cout<<" "<<cnt[i];}
题目链接
PAT甲级1107 Social Clusters (30 分)
https://www.acwing.com/problem/content/1599/
PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数相关推荐
- PAT甲级1118 Birds in Forest :[C++题解]并查集
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:并查集的合并和查询. 问:一张照片上的鸟如何合并?相邻的合并(笔者采用的方式)或者全合并到第一只鸟就行,遍历一遍.所有照片中的鸟,合并 ...
- PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:并查集题目. 不清楚并查集的小伙伴,请移步并查集原理并查集板子:acwing836. 合并集合. 题意:给定一个连通图,当删掉任意1个 ...
- 使用 图论 解决PAT甲级1107 Social Clusters
题目 When register on a social network, you are always asked to specify your hobbies in order to find ...
- 1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744 很不错的一个并查集的操作.你会发现我们需要处 ...
- PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 所有的dist[ ]都≤Ds:最小的dist[ ]最大; dist[ ] 总和最大. 由于加油站是字符,为了简单起见,将m个加油站编 ...
- PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿 ...
- PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...
- PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计
文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析: 以数字abcdefg这个7位数字为例,说一下本题的思路. 1)数字1在每一位出现的次数. 2)以第d位为例,第d位的取值可以分为3种情 ...
- PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射
文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...
最新文章
- Bash shell
- XE5 Android 开发数据访问手机端 解决乱码的办法
- 如何开发一个npm包并发布
- go读取excel_Excelize 2.3.0 发布,Go 语言 Excel 文档基础库
- 【PAT甲级】1048 Find Coins (25 分) C++ 全部AC
- 支持向量机的近邻理解:图像二分类为例(3)
- 【Raspberry Pi - Raspbian】系统换更新源
- primefaces_PrimeFaces Mobile入门
- [hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup
- 智慧城市排名出炉 拉动安防产业向前进
- 苹果和linux_苹果发布ResearchKit,Linux采用冲突代码,等等
- wxpython2.8_wxPython 2.8 Application Development Cookbook英文pdf版
- 什么题材的短视频最吸引人观看?
- C++中使用初始化列表比在构造函数中对成员变量赋值更高效
- PPT打印预览无背景
- Redux中的reducer到底是什么,以及它为什么叫reducer?
- 推荐几个有趣且实用的微信小程序……
- H5手机端ios的缓存
- 儿童剧剧本话剧舞台剧戏剧情景剧红色课本剧英语剧音乐小品剧视频
- python学习笔记,初学者Python3
热门文章
- SharePoint 服务器端对象模型操作文档库(上传/授权/查看权限)
- SQL Server 批量插入数据的两种方法(转)
- Delphi2010 DataSnap 学习(一)
- vs debug 模式生成的exe 另一台电脑_C++利用spdlog生成日志
- STO双中心势能积分
- 【控制】《多无人机协同控制技术》周伟老师-第3章-面向协同控制的无人机单机控制
- 3.7 为什么需要非线性激活函数-深度学习-Stanford吴恩达教授
- STM32 电机教程 1 - 用ST Motor Profiler 测量无刷电机参数
- STM32 基础系列教程 10 - 单线串口(半双工)
- 记录一次CPLD资源过少、时序伪例的解决办法