1.最小生成树
- prime算法
prime算法又称为加点法,循环n次,每次找到距离集合最小距离的点,将它加入集合中。
3.代码
int prime() {
memset(dis, 0x3f, sizeof(dis));
int res = 0;
for (int i = 0; i < n; i++) {
int t = -1;
for (int j = 1; j <= n; j ++) {
if (!st[j] && (t == -1 || dis[t] > dis[j])) {
t = j;
}
}
if (i && dis[t] == INF) return INF;
if (i) res += dis[t];
for(int j = 1; j <= n; j++) dis[j] = min(dis[j], g[t][j]);
st[t] = 1;
}
return res;
}
4.注意
- 注意第一个点,每次使用之前都应该判断是否为0。
- res应该在更新之前加,防止自环。
- 别忘了把点加入集合。