最小生成树kruskal

来源:互联网 发布:国云数据裁员 编辑:程序博客网 时间:2024/05/29 04:36
#include<iostream>#include<algorithm>#define MAX_V 100001#define MAX_E 100001using namespace std;int set[MAX_V];struct edge{    int u;    int v;    int cost;};edge es[MAX_E];int V,E;int find(int x){    while(set[x]!=x)        x=set[x];    return x;}int merge(int x,int y){    int fx=find(x);    int fy=find(y);    if(fx==fy)        return 0;    else        set[fx]=fy;}bool cmp(struct edge a,struct edge b){    return a.cost<b.cost;}int kruskal(){    sort(es,es+E,cmp);    int res=0;    for(int i=0;i<E;i++){        if(merge(es[i].u,es[i].v)){            res=res+es[i].cost;         }    }    return res;}
0 0