最小生成树(模板+入门题)
最小生成树 加权图是一种为每条边关联一个权值(可表示成本、时间等)的图模型。这种图能表示许多场景,如航空图中边表示航线,权值表示距离或费用。在航空图中,通常的问题是如何使距离或费用最小化。 我们可以通过加权无向图的最小生成树来解决这个问题。 图的生成树:是它的一颗含有其他所有顶点的无环连通子图。一幅加权无向图的最小生成树(MST)是它的一颗权值最小的生成树(树中所有边的权值之和最小)。 我们会一起学习计算最小生成树的两种经典算法:Prime算法和Kruskal算法。 首先有几个注意点: 只考虑连通图 边的权值可以表示距离、时间、费用或其他变量 边的权重可能是0或负数 所有边的权重都不相同 我们要在一幅加权连通无向图中找到它的最小生成树。 首先定义一下 加权无向图的数据结构 最小生成树算法:Prim算法和Kruskal算法 Prim算法: Prim算法 模板: 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <string> 5 #include <math.h> 6 #include <algorithm> 7 #include <vector> 8 #include <stack> 9 #include <queue> 10 #include <set> 11 #include