📄 ufsets.h
字号:
#ifndef UFSETS
#define UFSETS
const int DefaultSize = 10;
class UFSets { //集合中的各个子集合互不相交
public:
UFSets (int sz = DefaultSize); //构造函数
~UFSets() {delete []parent; } //析构函数
UFSets& operator = (UFSets& R); //操作符重载,实现集合赋值
void Union (int Root1, int Root2); //子集合并
//接受两个参数,为需要合并的两个节点的序号,不返回值。
int Find (int x); //查找x的根
//接受一个参数,为int类型,表示需要查找的节点序号
//返回一个int类型值,表示根的序号
void WeightedUnion (int Root1, int Root2);
//改进例程:压缩高度的合并算法
//与Union类似,接受两个参数,为需要合并的两个节点的序号,不返回值。
int CollapsingFind (int i);
//使用折叠规则的搜索算法
//同Find函数:
//查找x的根
//接受一个参数,为int类型,表示需要查找的节点序号
//返回一个int类型值,表示根的序号
void output(); //自定义函数,用于输出并查集目前状态。
//输出格式为,节点序号:父节点序号(若为根节点,则输出节点个数)
private:
int *parent; //集合元素数组(双亲表示)
int size; //集合元素的数目
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -