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

32.Acwing基础课第837题-简单-连通块中点的数量

32.Acwing基础课第837题-简单-连通块中点的数量

题目描述

给定一个包含 n 个点(编号为 1∼n)的无向图,初始时图中没有边。

现在要进行 m 个操作,操作共有三种:

  1. C a b,在点 a 和点 b 之间连一条边,a 和 b 可能相等;
  2. Q1 a b,询问点 a 和点 b 是否在同一个连通块中,a 和 b 可能相等;
  3. Q2 a,询问点 a 所在连通块中点的数量;

输入格式

第一行输入整数 n 和 m。

接下来 m 行,每行包含一个操作指令,指令为 C a bQ1 a bQ2 a 中的一种。

输出格式

对于每个询问指令 Q1 a b,如果 a 和 b 在同一个连通块中,则输出 Yes,否则输出 No

对于每个询问指令 Q2 a,输出一个整数表示点 a 所在连通块中点的数量

每个结果占一行。

数据范围

1≤n,m≤105

输入样例:

5 5
C 1 2
Q1 1 2
Q2 1
C 2 5
Q2 5

输出样例:

Yes
2
3

代码:

#include <iostream>using namespace std;
const int N = 1e5+10;
int p[N], Size[N];void init(int n)
{for(int i = 1; i <= n; i++){p[i] = i;Size[i] = 1;}
}int find(int x)
{if(p[x] != x)  p[x] = find(p[x]);return p[x];
}void merge(int a, int b)
{int pa = find(a), pb = find(b);if(pa == pb)  return;if(Size[pa] < Size[pb])  swap(pa, pb);p[pb] = pa;Size[pa] += Size[pb];
}int get_size(int x)
{return Size[find(x)];
}int main()
{int n, m;cin >> n >> m;init(n);while(m--){string op;int a, b;cin >> op;if(op == "C")  {cin >> a >> b;merge(a, b);}else if(op == "Q1")  {cin >> a >> b;if(find(a) == find(b))  cout << "Yes" << endl;else  cout << "No" << endl;}else{cin >> a;cout  << get_size(a) << endl;;}}return 0;
}
#include <iostream>using namespace std;const int N = 100010;int n, m;
int p[N], cnt[N];int find(int x)
{if (p[x] != x) p[x] = find(p[x]);return p[x];
}int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ){p[i] = i;cnt[i] = 1;}while (m -- ){string op;int a, b;cin >> op;if (op == "C"){scanf("%d%d", &a, &b);cnt[find(b)] += cnt[find(a)];p[find(a)] = find(b);}else if (op == "Q1"){scanf("%d%d", &a, &b);if (find(a) == find(b)) puts("Yes");else puts("No");}else{scanf("%d", &a);printf("%d\n", cnt[find(a)]);}}return 0;
}
http://www.jsqmd.com/news/592545/

相关文章:

  • 颠覆式游戏助手:如何让原神体验提升300%的开源工具
  • ios开发:保存kingfisher显示的图片到本地
  • 3个关键步骤:在AMD显卡上部署本地AI大模型,轻松跑起Llama 3和Mistral
  • LightOnOCR-2-1B解决文档数字化难题:老旧扫描件、模糊照片文字轻松提取
  • Pixel Aurora Engine 集成SpringBoot实战:构建创意图片生成微服务
  • python SharedMemory
  • **时序数据库实战:用InfluxDB构建高吞吐物联网数据采集系统**在现代物联网(IoT)场
  • FlycoTabLayout:构建Android沉浸式导航体验的高效解决方案
  • 基于COMSOL相场法与水平集方法的多孔介质两相驱替模拟案例与随机孔隙度几何程序定制
  • 哪些任务永远不应该交给Agent
  • 如何让ollama-for-amd释放AMD GPU潜能?完整落地指南
  • 5分钟快速上手:QtScrcpy安卓投屏与虚拟按键终极指南
  • ORACLE数据库星型模型设计实例
  • 20251909 2024-2025-2 《网络攻防实践》实验三
  • 硬件工程师避坑指南:从选型到焊接,搞定晶振不起振的10个实战细节
  • 项目管理系统项目模板权限模板报表模板怎么做才能快速复制
  • 2025届必备的十大AI学术神器实际效果
  • BiliTools哔哩哔哩工具箱2026年:跨平台资源管理终极解决方案与完整指南
  • 百考通:精准匹配当前主流技术方向与行业需求,让研究更顺畅
  • 2026届必备的AI辅助论文神器实测分析
  • [特殊字符]C/C++内存管理深度解剖:从内存布局到new/delete底层,吃透面试必考核心
  • Emby高级功能终极解锁指南:免费获得完整Premiere体验的完整教程
  • 我受够了要给不同的Agent喂信息了
  • 拆解 OpenHands(14)--- Microagents
  • Synology Photos人脸识别功能突破全解析:跨设备适配与性能优化指南
  • [特殊字符]C++模板初阶通关:泛型编程核心,告别冗余代码!
  • WechatRealFriends:微信单向好友智能检测与关系管理工具
  • 探索Ryujinx:在PC上免费畅玩Switch游戏的完整指南
  • 从CAD到Web地图:LibreDWG解析DWG的坑我都帮你踩完了(Python实战)
  • AGV 自动充电是什么