并查集

image.png

int find(int x)
{
    if(par[x] != x)
    {
        par[x] = find(par[x]); // 路径压缩,查询完根节点后直接赋值
    }
    return par[x];
}

七段码

image.png

并查集 + dfs

首先是灯管有七个,对应 dfs 终止条件为 7 层
然后每个灯对应两种状态 开与不开 以此进行dfs遍历
然后在终止条件的判断上,然后两个灯都是开着的,并且相同状态需要在并查集中归为同一集合
最后通过查找每个打开的灯管并查看集合的数量是否唯一,唯一则此情况符合答案