// 并查集查找函数 inlineintFinds(int x) { int t = x; // 记录其实查找结点 while(x != father[x]) x = father[x]; // 开始查找 father[t] = x; // 路径压缩查找 return x; // 返回结果 }
// 并查集合并操作 inlinevoidUnion(int a,int b) { a = Finds(a),b = Finds(b); // 查找对应根节点 father[a] = b; // 合并对应根节点 }
inlinevoidsolve() { int n,a,b; cin >> n >> a >> b; int maxs = max(a,b); // 获取对应 a b 最大值
int A = maxs + 1; // 根据对应的最大值,赋值一个元素范围外的元素作为 集合 A 的根节点 int B = maxs + 2; // 根据对应的最大值,赋值一个元素范围外的元素并且不同于集合A的根元素的元素作为 集合 B 的根节点 father[A] = A,father[B] = B; // 集合根节点初始化