题意: 给出已0 1染色的无向图(不一定联通),一次操作为一对相邻点颜色互换. 问使任意相邻点颜色不同,最少需要多少次操作 分析: 交换两点的代价即为两点间最短路. 故用BFS找出所有点到任意点的最短距离,并记录路径. 对于每个连通块,按照相邻点颜色不同重新染色一遍,若发现已给的01数目与染色需要01数目不符,则不可能 不然 ,则根据已给的01数目与染色需要01数目,确定匹配的点集. 最后KM算法算出最小权值匹配即可 确定匹配后,分析下同一路上的交换顺序,确定交换步骤 不算难,就是麻烦 #inc…