实际上就是查询 $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 }