实际上就是查询 $u$ 到 $v$ 路径上 边双的个数 $ -1$。

并且题目仅有删边, 那么就离线倒序添边。

维护 边双 略有不同: 

首先需要一个并查集, 记录 边双内的点。 在 添加边$(u,v)$时 , 若$u, v$ 已经相连, 那么把 $u, v$ 路径上的点 缩成一个点, 用最上面的点 来代替。

1 void del(int x, int y) {
2         if (!x) return;
3         fa[x] = y;
4         del(lc(x), y);
5         del(rc(x), y);
6     }
压缩点

相关文章: