// unionfind_test.cpp - 模块测试文件
import <iostream>;
import <format>;
import UnionFind;
int main() {
std::cout << "测试 UnionFind 类\n";
UnionFind uf(10); // 创建一个大小为10的并查集
// 测试初始状态
std::cout << std::format("初始测试:\n");
std::cout << std::format("1和1是否连接: {} (预期: 是)\n", uf.connected(1, 1) ? "是" : "否");
std::cout << std::format("1和2是否连接: {} (预期: 否)\n", uf.connected(1, 2) ? "是" : "否");
// 合并一些集合
uf.unionSets(1, 2);
uf.unionSets(2, 5);
uf.unionSets(3, 4);
uf.unionSets(4, 7);
uf.unionSets(5, 6);
uf.unionSets(7, 8);
// 测试连接性
std::cout << std::format("\n合并后测试:\n");
std::cout << std::format("1和6是否连接: {} (预期: 是)\n", uf.connected(1, 6) ? "是" : "否");
std::cout << std::format("2和5是否连接: {} (预期: 是)\n", uf.connected(2, 5) ? "是" : "否");
std::cout << std::format("3和8是否连接: {} (预期: 是)\n", uf.connected(3, 8) ? "是" : "否");
std::cout << std::format("1和3是否连接: {} (预期: 否)\n", uf.connected(1, 3) ? "是" : "否");
// 合并两个大集合
uf.unionSets(1, 3);
std::cout << std::format("\n最终合并后测试:\n");
std::cout << std::format("1和3是否连接: {} (预期: 是)\n", uf.connected(1, 3) ? "是" : "否");
std::cout << std::format("2和8是否连接: {} (预期: 是)\n", uf.connected(2, 8) ? "是" : "否");
std::cout << std::format("4和6是否连接: {} (预期: 是)\n", uf.connected(4, 6) ? "是" : "否");
return 0;
}