CF1555F Good Graph

有以下引理:

不存在两个合法环,他们存在公共边。
证明:公共边边权为 \(z\),第一个环除去公共边为 \(x\),第二个环除去公共边为 \(y\)
则有 \(x \oplus z = 1\) \(y \oplus z = 1\),则存在另外一个简单环的权值为 \(x\oplus y = 0\),所以该图不合法。

我们知道一颗树上是没有环的。

所以一颗树不影响非树边的加入。

我们考虑先在这些边按照加边顺序里做一颗生成树出来。

这些边一定可以存在。

那么我们考虑那些非树边。

我们在加入一条非树合法边时,在 \((u,v)\) 这条路径上打上一个\(tag\)

判断一条非树边是否合法时,我们可以查询 \((u,v)\) 是否有标记,并查询 \((u,v)\) 的异或和。

posted @ 2021-08-05 10:25  fhq_treap  阅读(103)  评论(0编辑  收藏  举报