brute force ? 其实是平方分解.很容易想到的是每一个颜色建一个图,然后并查集维护一下连通性. 问题在于颜色有O(m)种,每种颜色的图点数都是O(n)的,因此并查集的空间只能重复利用. 但是可以把以O(m)的空间把有用的连通块信息保留下来. 之后的处理可以借鉴分块的思想. 记点v属于的连通块数量为b(v),对于询问x,y ,根据点所在的连通块信息,可以以O(max(b(x),b(y)))的时间回答出来. 设置一个阀值B,对于b(v)>B,提前预处理,小于B的就暴力回答. 因为一条边最多…