神仙题.
先做出原图的一棵 $dfs$ 树.对于每条非树边,随机分配一个权值 $x$ ,将它在树上覆盖到的树边的权值全部异或上 $x$ .
每次询问给定了一个边的集合 $S$ ,若存在 $S$ 的一个非空子集,该子集内所有的边权异或和为 $0$ ,则不连通,否则连通.
边权覆盖可以用树上差分,查询可以利用线性基,看给出的边权在 $\mbox{xor}$ 意义下是否线性无关.
1 |
|
夢はここに 思い出は遠くに
神仙题.
先做出原图的一棵 $dfs$ 树.对于每条非树边,随机分配一个权值 $x$ ,将它在树上覆盖到的树边的权值全部异或上 $x$ .
每次询问给定了一个边的集合 $S$ ,若存在 $S$ 的一个非空子集,该子集内所有的边权异或和为 $0$ ,则不连通,否则连通.
边权覆盖可以用树上差分,查询可以利用线性基,看给出的边权在 $\mbox{xor}$ 意义下是否线性无关.
1 | #include <bits/stdc++.h> |