圣诞老人和圣诞帽(基础并查集plus)
题目描述
又到了一年圣诞节,圣诞老人拿出手机一看朋友圈,发现很多人都想要一顶圣诞帽子,于是圣诞老人很开心的带着一群驯鹿去市场买圣诞帽子,但是他很快就发现了一个问题:每个人都想要一顶不和朋友重复的圣诞帽,否则他就会不开心。比如A认识B,B认识C,那么A肯定也认识C,所以ABC 的帽子都不能有相同的一顶。
这可把圣诞老人难坏了,好在市场有很多种类的圣诞帽子(可以看作无限多),请你告诉他最少需要买多少种?
输入格式
输入一共有两行,第一行N表示有N种朋友关系,第二行一共有N组数p和q,表示p和q相互认识。
输出格式
输出一个数表示一共需要买多少种帽子圣诞帽子
样例输入
1 1 2
样例输出
2
提示
0< N,p,q<= 100
这个题最关键的思路在于标红部分,对于标红部分以外的来说就是并查集的简单模型,而处理标红部分则是这道题的关键,因为只是在认识的人(才需要不同种类的帽子),而在输入的朋友关系所构成的线路上,每一条朋友线路都可以看成互相平行得,我们只需要找出最长的那条线路即可
这道题的解题思路为记录每一条朋友线路上的个数,然后找出朋友个数最多的输出其余的和最基本的并查集并无两样
#include <iostream>
#include <stdio.h>
using namespace std;
int fa[10010];
int sz[10010];//每个帽子的
int find(int x)
{if(fa[x]==x){return x;}else{return fa[x]=find(fa[x]);}
}
void check(int a,int b)
{a=find(a);b=find(b);if(a!=b){fa[a]=b;sz[b]+=sz[a];//将其该组累计于下一位 (父亲的身上)相当于该条朋友线上需要帽子的种类+1 sz[a]=0;//该(儿子)完成了复制任务后就结束变为0 //即使不将其变为0其实也行QvQ }
}
int main()
{int n;cin>>n;for(int i=1;i<=101;i++){fa[i]=i;//对集合进行初始化 sz[i]=1;//至少一种帽子所以将所有初始化为1 }for(int i=1;i<=n;i++){int a,b;cin>>a>>b;check(a,b);}int ans=0;for(int i=1;i<=100;i++)//从一开始遍历寻找最多种类的,最多种类的就是答案 {ans=max(ans,sz[i]);}cout<<ans<<endl;return 0;
}
圣诞老人和圣诞帽(基础并查集plus)相关推荐
- POJ 1611(基础并查集)
The Suspects 问题分析 基础并查集,就是加了个人数统计. #include <cstdio>using namespace std;const int N = 3e4+3; i ...
- 算法随笔 — 树结构基础 — 并查集
并查集定义 并查集是一种用来解决 连通性 的数据结构,抽象的方向不同会导致实现方式的不同. 我们也可以用并查集来表示集合的关系. 1.快速查找(quick-find) 如图所示,我们可以通过给元素加颜 ...
- POJ 并查集 题目汇总 ——czyuan原创(转)
继续数据结构的复习,本次的专题是:并查集. 并查集,顾名思义,干的就是"并"和"查"两件事.很多与集合相关的操作都可以用并查集高效的解决. 两个操作代码: ...
- 【转】并查集MST题集
转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...
- POJ:1182 食物链(带权并查集)
http://poj.org/problem?id=1182 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1 ...
- POJ1182 食物链(并查集)
[题目链接] http://poj.org/problem?id=1182 题目意思 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1 ...
- [基础算法] 并查集
并查集 1.将两个集合合并 2.查询两个集合是否在同一个集合中 基本原理:每个集合用同一棵树来表示,树根的编号就是树的编号,每个节点储存其父节点,p[x]表示x的父节点. 问题一:如何判断是否为根节点 ...
- 基础数据结构(二):字典树、并查集、堆、哈希表、字符串的哈希方式、STL的常见容器及其接口
文章目录 一.字典树Trie 1 原理 2 Trie字符串统计 3 [LeetCode 208. 实现 Trie (前缀树)](https://leetcode-cn.com/problems/imp ...
- 【数据结构与算法基础】并查集原理、封装实现及例题解析(C和java)
前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...
最新文章
- 总结Servlet体系接口和类
- 可以直接考信息系统项目管理师吗
- leetcode1046. 最后一块石头的重量(堆)
- 前端学习(1398):多人管理18项目重定向
- 优雅的redux异步中间件 redux-effect
- 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例
- js jquery 判断元素是否在数组内
- 替罪羊树+3369 【模板】普通平衡树
- python判断文件格式_Python判断上传文件类型
- Linux_I2C读写流程
- Android开发Tips(5)
- 无线AP配服务器,cisco思科无线ap设置步骤
- 交通标志牌的检测与识别
- 群、环、域的概念,定义和理解.
- 图像处理笔记4-霍夫变换直线检测、圆检测
- linux 查询文件大小
- 让DNA说Hello!微软成功研制用DNA存储读取数据的全自动系统
- 融云开发者沙龙(济南站)活动精彩回顾
- 哈姆雷特与雷欧斯提的决斗
- C语言 有符号类型转换为无符号类型
热门文章
- Java基于SSM的企业OA办公系统
- springboot的mvn packing
- 【交互设计】如何描述你的产品
- dom日常任务_如何享受工作中的日常任务
- windows@网络防火墙@软件联网控制@netsh advfirewall firewall
- Karto_SLAM研究
- 如何提交一个PR?【OpenHarmony成长计划】【OpenHarmony开源社区】
- QT_QPalette、背景颜色
- 【利用cloudconvert网站api简单6步骤实现cad文件格式dwg转dxf】
- 基于车位号码的地下停车场蒙特卡洛定位系统