可能由于昨天是放假第一天,乱七八糟的事情还是挺多的,没准备过来。。。刷着刷着就有事情了,总觉得心里不大安稳,连MST的题目都刷的不多。。。希望今天能好点吧。。。
首先补充MST,然后再开始今天的计划,最短路。
poj2349/zoj1914
大清早的就被恶心了一把,还是模板不太会用的缘故。。。忘记双向边了╮(╯▽╰)╭
Prime就能搞定,Kruskal貌似还要做出一些调整才行。MST最小第k边。
poj1258
被恶心了一个下午之后做的。大水。MST路径和。
poj1751/zoj2048
继续努力吧,这道题目卡了一个下午。。。真心无语了。。。又出现了昨天类似的情况,各种error,最后拿了一个Prime书上给出的样例代码就过了。。。就是一个傻瓜邻接矩阵嘛。。。╮(╯▽╰)╭
输出MST的边。
poj3026
BFS+MST,不难,感觉稍微考了点编码能力吧,不过第一次碰到这题的时候还是感觉略微头大的。
先用BFS求出任意两点的对端路径,然后构建图,最后MST路径和。
poj1679
MST的唯一性。
思路很简单,不管是Kruskal还是Prime,只要选取最短边的时候发现能选取多条权值相等边的情况出现,那么就不是唯一的MST。
Prime是以点为核心求出MST,而Kruskal则是以边为核心求出MST。所以在求MST是否唯一的时候也以这一点作为突破口。
注:蓝皮上面提到了一个非唯一的充分条件:即每个顶点的扩展方式不唯一,但是MST可以不唯一,所以是错的。。。囧啊。。。
正确思路:任意方法够出一个MST,将有相同权值的边去掉,然后继续构造,看是否有相同的MST。这道题目貌似数据不太强,以后再找找有没有类似的题目。