最小生成树
两种方法:
1,Prim(加点法)
从随便一个点i开始,dis[i]=0,dis[其他点]=无穷,
进行n次循环,
每次找到距离集合最短距离的点k,
更新dis数组,dis数组表示点j到集合的最小距离
若dis[j]>点k和点j的距离,则更新
最后将dis数组求和即为ans
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
2,Kruskal (加边法)
存储边,使用并查集来合并边的两个顶点
struct edge
{
int u, v, power;
};
将边从小到大排序,逐个读入每条边,
若边的两个端点的祖先不一样,则合并两个集合,ans+=a[i].power;