最小生成树

两种方法:

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;

记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

posted on 2021-11-10 23:03  naiji  阅读(34)  评论(0)    收藏  举报