并查集

题目链接

P3367 【模板】并查集
837. 连通块中点的数量

并查集

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数 N,M ,表示共有 N 个元素和 M 个操作。

接下来 M 行,每行包含三个整数 Zi,Xi,Yi。当 Zi=1 时,将 XiYi 所在的集合合并。当 Zi=2 时,输出 XiYi 是否在同一集合内,是的输出 Y ;否则输出 N

输出格式

对于每一个 Zi=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N

输入

4 7 2 1 2 1 1 2 2 1 2 1 3 4 2 1 4 1 2 3 2 1 4

输出

N Y N Y

说明/提示

对于 30% 的数据,N10M20

对于 70% 的数据,N100M103

对于 100% 的数据,1N1041M2×1051Xi,YiNZi{1,2}

代码

  • 时间复杂度:O(logn)
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int fa[N],n,m; int get(int x) { if(x==fa[x])return x; return fa[x]=get(fa[x]); } void merge(int x,int y) { fa[get(x)]=get(y); } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)fa[i]=i; while(m--) { int z,x,y; scanf("%d%d%d",&z,&x,&y); if(z==1)merge(x,y); else puts(get(x)==get(y)?"Y":"N"); } return 0; }

连通块中点的数量

题目描述

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

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

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

输入格式

第一行输入整数 nm

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

输出格式

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

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

每个结果占一行。

数据范围

1n,m105

输入样例:

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

输出样例:

Yes 2 3

代码

  • 时间复杂度:O(logn)
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,cnt[N],fa[N]; int find(int x) { if(fa[x]==x)return x; return fa[x]=find(fa[x]); } int main() { cin>>n>>m; for(int i=1;i<=n;i++)fa[i]=i,cnt[i]=1; while(m--) { string op; int a,b; cin>>op; if(op=="C") { cin>>a>>b; a=find(a),b=find(b); if(a!=b) { fa[a]=b; cnt[b]+=cnt[a]; } } else if(op=="Q1") { cin>>a>>b; puts(find(a)==find(b)?"Yes":"No"); } else { cin>>a; cout<<cnt[find(a)]<<'\n'; } } return 0; }

__EOF__

本文作者acwing_zyy
本文链接https://www.cnblogs.com/zyyun/p/15314517.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zyy2001  阅读(51)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示