啊,先纪念一下吧,难得一天这么666 AC完了所有题 (次小生成树代码看懂)
今天学到了最小生成树算法中的Prim算法和Kruskal算法。从宏观上来讲prim更适合稠密图,krustal更适合稀疏图,但对于我们来说暂时没有什么区别啦。
Prim算法中主要注意的点是
- 在visit数组与minn数组(最小到达某点的权边的权值)上 注意只有未遍历而且小于当前所存的权才可以更新
- 循环次数为n-1次,错误的次数会导致答案错误
- 除自身为0以外,所有点之间的初始距离为正无穷
Kruskal算法中主要注意的点是
- 所有的边要用结构体存,方便快排
- 注意并查集的Getfather函数的压缩路径和union函数的是否父亲相同的判断
- 注意变量k的维护,k满足k==n-1时必须及时跳出循环
还有一个很容易忽略的问题!!就是memset,特别是有多组数据的时候必须在前面重置内存
附上我对次小生成树代码的注释: