#define max 100
edge es[max];
int V,E;
struct edge{int u,v,cost};
int par[max];
bool cmp(edge a,edge b)
{return a.cost<b.cost;}
void init(int l)
{for(int i=0;i<l;i++)par[i];}
int find(int x)
{return x==par[x]?x:par[x]=find(par[x]);}
void unite(int x,int y)
{par[find(x)]=find(x)==find(y)?par[x]:par[y];}
int kruskal()
{
sort(es,es+E,cmp);
init(max);
int res=0;
for(int i=0;i<max;i++){
if(find(es[i].u)!=find(es[i].v))
res+=es[i].cost;
unite(es[i].u,es[i].v);
}
return res;
}
kruskal
最新推荐文章于 2019-11-01 13:49:42 发布