当前位置: 首页 > news >正文

题解:AcWing 6058 亲戚

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AcWing:6058. 亲戚 - AcWing题库

【题目描述】

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的某个人所在家族的人数。

规定:

  • 和 是亲戚, 和 是亲戚,那么 和 也是亲戚。
  • 如果 是亲戚,那么 的亲戚都是 的亲戚, 的亲戚也都是 的亲戚。

具体来说,一共涉及到n nn个人(编号1 ∼ n 1\sim n1n),接下来将依次进行m mm个操作,操作分为以下两种:

  • M a b,表示告知你a aab bb具有亲戚关系。
  • Q a,表示向你询问,根据此前已经给定的所有信息,可以确定的a aa所在的家族的人数。

【输入】

第一行包含两个整数n , m n,mn,m

接下来m mm行,每行包含一个操作信息,格式如题面描述。

【输出】

对于每个Q a操作,输出一行结果,一个整数,表示当时可以确定的a aa所在的家族的人数。

【输入样例】

5 10 M 3 2 Q 4 M 1 2 Q 4 M 3 2 Q 1 M 3 1 Q 5 M 4 2 Q 4

【输出样例】

1 1 3 1 4

【算法标签】

#并查集#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineN1000005intfa[N];// 并查集父节点数组intpeoNum[N];// peoNum[i]: 以i为根结点的集合的元素个数// 初始化并查集voidinitFa(intn){for(inti=1;i<=n;++i){fa[i]=i;// 每个结点初始化为自己的父节点peoNum[i]=1;// 每个集合初始大小为1}}// 查找根节点(带路径压缩)intfind(intx){if(x==fa[x])// 如果x是自己的父节点{returnx;// 返回x}else{returnfa[x]=find(fa[x]);// 递归查找并路径压缩}}// 合并两个集合voidmerge(inti,intj){intx=find(i);// i的根节点inty=find(j);// j的根节点if(x==y)// 如果x, y已经在一个集合内,直接返回{return;}fa[x]=y;// x的双亲设为ypeoNum[y]+=peoNum[x];// 合并集合大小}intmain(){ios::sync_with_stdio(false);// 关闭C++与C输入输出同步cin.tie(nullptr);// 解绑cin和cout,加速输入charc;// 操作类型intn,m,a,b;// n: 人数, m: 操作数, a,b: 操作参数cin>>n>>m;// 输入人数和操作数initFa(n);// 初始化并查集for(inti=1;i<=m;++i)// 处理每个操作{cin>>c;// 输入操作类型if(c=='M')// 合并操作{cin>>a>>b;merge(a,b);// 合并a,b所在的集合}else// c == 'Q',查询操作{cin>>a;cout<<peoNum[find(a)]<<'\n';// 输出a所在集合的人数}}return0;// 程序正常结束}

【运行结果】

5 10 M 3 2 Q 4 1 M 1 2 Q 4 1 M 3 2 Q 1 3M 3 1 Q 5 1 M 4 2 Q 4
http://www.jsqmd.com/news/734228/

相关文章:

  • Gemma 2本地部署方案与优化技巧详解
  • 为 Hermes Agent 配置自定义供应商并指向 Taotoken 服务
  • 终极Mac剪贴板管理方案:Maccy完整使用指南与深度优化
  • OmniInsert:无掩码视频插入技术的原理与应用
  • 基于LLM的GUI自动化智能体:从原理到实践
  • Motif-2-12.7B模型架构与优化技术解析
  • 基于Claude的AI任务编排框架:MissionRunner实战指南
  • 使用 Taotoken CLI 工具一键配置团队统一的开发环境
  • 别再当‘炼丹师’了!用Python的shap库5分钟看懂你的模型在想什么
  • 终极指南:如何使用EASY-HWID-SPOOFER实现硬件信息伪装
  • 为团队开发环境统一配置 TaoToken CLI 工具
  • 2026 年用 1978 年终端 VT - 100,体验如何?虽问题多但感受超棒!
  • 基于FastAPI与钉钉Stream模式构建企业级ChatGPT机器人
  • 大语言模型规范对齐评估:挑战与ALIGN3框架解析
  • MCP 2026推理引擎集成实战:从零部署到毫秒级响应,7个关键配置参数全解析
  • 手把手教你用SpyGlass CDC调试:利用电子表格和增量示意图快速定位并修复CDC违例
  • 别再为多相机标定头疼了!VisionMaster三种标定方案深度对比与选型指南
  • 目前人流量统计已经做到比较稳定了
  • 外汇交易老手血泪史:我是如何用这个MT4风控EA管住手,告别爆仓的
  • VLAN和VXLAN一个字母之差,技术上有啥区别?
  • Cursor Pro破解工具完整指南:5步实战实现AI编程助手永久免费使用
  • 轻松实现:wechat-need-web让你的微信在浏览器中焕发生机
  • Cwtch隐私通信协议:基于Tor的去中心化元数据抵抗实践
  • ENA数据库高级搜索全攻略:从“宏基因组WGS”到精准获取目标序列数据
  • GPU性能指标解析与AI计算优化策略
  • 将 OpenClaw Agent 工作流对接至 Taotoken 多模型服务的配置指南
  • SOCD Cleaner:突破性键盘输入冲突解决方案,让游戏操作精度提升300%
  • 从日志到链路:Spring Cloud Sleuth 如何帮你把散落的日志串成故事线(附Logback配置技巧)
  • 告别Root!用ADB广播动态控制安卓导航栏三键(附完整代码与测试命令)
  • 对比自建代理,使用聚合平台在模型选型与稳定性上的优势