Kruskal最小生成树

Posted hanasaki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kruskal最小生成树相关的知识,希望对你有一定的参考价值。

贪心+并查集

struct edge 
    int from, to, dist;
    bool operator < (const edge &ths) const 
        return dist < ths.dist;
    
e[N];

int find(int k) 
    return f[k] == k ? k : f[k] = find(f[k]);


int main() 
    int ans = 0;
    for(int i = 0; i < n; i++) scanf("%d%d%d", &e[i].from, &e[i].to, &e[i].dist);
    sort(e, e + n);
    for(int i = 0; i < n; i++) 
        if(find(e[i].from) != find(e[i].to)) 
            f[find(e[i].from)] = find(e[i].to);
            ans += e[i].dist;
        
    

 

以上是关于Kruskal最小生成树的主要内容,如果未能解决你的问题,请参考以下文章

图的最小生成树算法(Prim和Kruskal)

最小生成树之Kruskal算法和Prim算法

最小生成树-Prim算法与Kruskal算法

最小生成树算法Kruskal算法Prim算法切分定理贪心算法

[图] 最小生成树-Prime算法和Kruskal算法

最小生成树算法详解(prim+kruskal)