题目大意
给出一幅无向图。每一步操作你可以将两个没有边链接的点缩为一个点。问可以缩出的最长链长度。
分析
这道题一如既往地无从下手。
本来看出了貌似存在奇环答案就为-1,但是不知怎的验证时出错了就否定了这个结论。
其实这道题的关键就在于奇环和偶环。
首先奇环总是会被缩成三角形然后就没法缩了。所以存在奇环的图答案都为-1。
否则这个图必定为二分图。
那么问题就变成了它能缩出的最长链是什么。那么这里有个不易发现的结论就是它必定是这个联通块的最远两点的距离。
构造方法也很简单,只需要将到某个端点距离相等的所有点都缩起来就好了(这些点之间必定没有边否则就不是二分图了。)
找联通块最远两点就枚举起点然后最短路,记得用宽搜不然会超时。
Debug logs
11708652 Jun/22/2015 14:57 Time limit exceeded on test 19
Debug : 最短路用了dfs。
11708826 Jun/22/2015 15:10 Accepted