本文共 607 字,大约阅读时间需要 2 分钟。
数据结构部分展示了一个用于并查集算法的结构体定义。C++ struct edge { int a, b, c };
其中,struct edge
定义了一个包含三个整数字段的边结构体。这个定义用于存储并查集算法中边的信息。
C++ bool cmp(edge a, edge b) { return a.c < b.c; }
这个函数用于比较两个边的属性。在并查集算法中,这个比较函数用于对边按属性进行排序。
C++ int p[n];
这是一个用于并查集路径压缩和按秩合并的数组,用于存储每个节点的父节点。
C++ int n, m;
这里的 n
和 m
分别表示并查集的节点数和边的数量。
C++ int find(int x) { if (x == p[x]) return x; return p[x] = find(p[x]); }
这是并查集的find
函数,用于查找节点的根节点。当节点不在同一集合中时,递归调用自身并对路径进行压缩。
C++ void merge(int x, int y) { p[find(x)] = find(y); }
这是并查集的merge
函数,用于合并两个节点所在的集合。合并操作会根据秩大小决定哪个树的根会成为另一个树的父节点。
C++ int main() { ... }
这是并查集算法的主函数,用于读取输入数据,初始化并查集数据结构,并执行路径压缩和按秩合并操作。
转载地址:http://rxpqz.baihongyu.com/