ACM-最小生成树
Nicetomeetu-
没有
展开
-
POJ 1679 The Unique MST(算法导论23-1次优最小生成树)
只需要讲解算法导论的题即可。23-1次优最小生成树a. 最小生成树唯一性证明:已知当前构造的边集A是最小生成树的子集。令无向图G的一个切割是,显然该切割是尊重A的。已知跨越该切割的轻量级边对于A是安全的,又因为该无向图G的每条边的权值都不相同,所以对于当前A而言,安全边有且只有一条,即对于每个状态下的A,构造最小生成树的方式是唯一的。所以最小生成树是唯一的。次优最小原创 2017-05-13 00:25:09 · 2057 阅读 · 1 评论 -
判断最小生成树的唯一性
先用kruskal算法算出最小生成树,并把最小生成树的边记录下来。然后依次枚举删除边,用其他的边再次使用kruskal算法算出最小生成树。如果算出的代价和原来的相同,则不唯一,否则唯一。另外当我们删除一条边之后,可能根本构不成一颗生成树,要判断一下。代码如下:#include #include #include #include #include #include #inclu原创 2016-12-13 19:38:51 · 11653 阅读 · 3 评论 -
EOJ 2067 最小生成树
本题就是给定一个图,有些点已经有边了, 在有边的情况下求出最小生成树。如果用kruskal算法,已经存在的边实际上是在为我们初始化并查集,我们要把这些边的左右端点的集合并起来就行了。在完成了并查集的初始化,就可以套模板求最小生成树了。代码如下:#include #include #include #include #include #include #include #i原创 2016-12-03 15:43:16 · 424 阅读 · 0 评论 -
POJ 3723 Conscription 最大生成树 + 并查集
看了挑战上的这道题,一开始根本没反应过来这就是最大生成树。不过仔细想想,如果我们把是朋友或者间接是朋友的人都放在一个集合,那么但我们通过a来招募b的时候,就在a和b中间连一条边,权值就是a和b的亲密度。当我们把这个集合中的人都招募完的时候,是不是集合中的人都被一条条边连接起来了呢?此外,为了使我们的总花费最小,我们肯定希望他们的亲密度之和最大(节省的钱最多),也就是使得这个连通块的边权值最大。这不原创 2016-11-26 10:26:23 · 410 阅读 · 0 评论