这个操作不好处理,因为权值在换而颜色却没换,考虑转化一下,变成每次将权值和颜色都交换,并将颜色反转。容易证明这是等价的。转化后相当于每个节点上有一个二元组 $(a_i,c_i)$,可以拿着二元组在图上移动,每经过一条边 $c_i$ 就反转,而 $a_i$ 不变。
模拟赛搬这题的时候给了一个二分图的特殊性质,故考虑二分图怎么做。容易发现,将二元组从一个点移动到同部的点不会改变颜色,而移动到异部的点则会改变颜色。也就是说,左部的黑点只能变成右部的红点,而左部的红点只能变成右部的黑点,反之亦然。综上,我们得到了有解的一个必要条件:对于每组权值相同的节点,两图中 左部黑点 + 右部红点 数量相同,且 左部红点 + 右部黑点 数量相同。进一步地,我们发现只要上述条件成立,每次移动一个二元组至正确位置,一定可以构造出一种操作方案,故这就是有解的充要条件。
现在考虑不是二分图怎么做。既然不是二分图,那就肯定有奇环,在奇环上走一圈显然会使颜色反转,也就是说,所有颜色不匹配的节点都可以通过去奇环上走一圈来变得匹配。故只要同颜色点数量的奇偶性相同,且每种权值节点的数量相同,就一定有解。
综上,对于每个连通块,判断其是否是二分图,然后根据相应的条件判断即可。点权值域较大,需要离散化,复杂度 $O(n \log n)$。