AcWing 算法基础课 并查集
并查集支持操作:
1、将两个集合合并
2、询问两个元素是否在一个集合当中
每个集合用一棵树来表示,以根节点编号表示整个集合,每个节点存储父节点p[x]
判断树根 if(p[x]==x)
求集合编号 while(p[x]!=x) x=p[x];
合并集合:x和y,x→根节点x,p[x]=y。
优化:路径压缩
对x进行查询一次后,将查询路径上的每个节点直接指向根节点。
int p[N];
int merge(int a,int b)
{
p(find(a))=find(b);
}
int find(int x)//查询+路径压缩
{
if(p[x]!=x) x=find(p[x]);
return p[x];
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人