hdu5740】的更多相关文章

HDU5740 Glorious Brilliance 题意: 给出一张不一定合法的染色图,每次可以交换相邻两点的颜色,问最少多少次能使染色图合法 合法的染色图相邻点的颜色不能相同 题解: 首先要确定原图中是否存在染色图,如果不存在直接输出\(-1\) 其次确定给定的两种颜色数量是否能够染出一张合法的染色图,如果数量不对输出\(-1\) 可以发现对于节点\(u,v\),交换两者的颜色最少需要操作两者\(dist_{u,v}\)次,并且可以保证路径中间点的颜色不变 指针先指向最左边点,然后右指针向…
考验代码能力的题目,感觉网络流一要求输出方案我就写的丑 http://www.cnblogs.com/duoxiao/p/5777632.html 官方题解写的很详细 因为如果一个点染色确定后,整个图的染色也就确定了: 对于两个点u和v, 令它们之间的最短路是dis(u,v), 那么交换它们两个颜色的最少步数是dis(u,v), 且存在一种交换序列不会破坏其它节点的颜色 这是两个突破口 我的一个WA的地方在于:构造方案时没有把路径上的颜色交换…… #include<bits/stdc++.h>…