题意简述就是给定 n 个点 m 条边(n≤105,m≤2×105)。
点有点权 xi,边有边权 wi,其中0≤w≤230。边权给出,但是点权未知。
对于每一条边 (u,v,w),我们需要满足 xu⊕xv=w。
最小化 ∑xi 并输出,或者判断没有合法的构造方案。
我的做法是在每一个连通块中随便找一个点当做起点开始DFS一遍,然后将起点的 x 设成0,根据树边来不断递推出来整个连通块内的点的点权,然后用非树边来检查构造出来的点权序列是否满足要求。
之后对每一个起点枚举其二进制的每一位,看将该位更改为1是否可以减小总和,如果可以的话就减小。
然后就WA了。
机房大佬的做法是在求总和之前再检查,这样就过了。
两个不同的做法可以看下面的两个剪贴板:
WA
AC