本文共 1177 字,大约阅读时间需要 3 分钟。
这篇文章展示了一个并查集的实现模板,适用于解决并查集相关的问题。并查集是一种高效的数据结构和算法,广泛应用于图的并查、集合的操作等领域。以下将详细介绍并查集的实现方法。
并查集的核心思想是通过路径压缩和按秩合并两个集合,实现快速的合并和查找操作。具体步骤如下:
#include#include using namespace std;int n, m, fa[10010], c, x, y, xx, yy;int find(int x) { if (fa[x] != x) { fa[x] = find(fa[x]); return fa[x]; } return x;}int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) fa[i] = i; for (int i = 1; i <= m; i++) { scanf("%d %d %d", &c, &x, &y); if (c == 1) { xx = find(x), yy = find(y); if (xx != yy) fa[xx] = yy; } else { xx = find(x), yy = find(y); if (xx != yy) printf("N\n"); else printf("Y\n"); } }}
fa数组用于存储父节点信息,初始时每个节点的父节点指向自身。find函数实现路径压缩,将节点沿路径上的节点直接指向根节点。n 和 m。fa 数组。m 个查询请求。这个并查集模板适用于以下场景:
通过上述模板,开发者可以快速实现并查集相关的算法,适用于复杂的数据处理任务。
转载地址:http://gyiq.baihongyu.com/