//krusal算法
int find(int u)//擒贼先擒王
{
if(u==pre[u]){
return u;
}else{
pre[u]=find(pre[u]);//路径压缩,使得第二次更快,直接找到老大
return pre[u];
}
}
void merge(int u,int v)
{
int t1=find(u);
int t2=find(v);
if(t1!=t2){
pre[t2]=t1;
}
return ;
}
int res=0;
sort(edges,edges+num,cmp);
for(int i=0;i<num;i++){
if(find(edges[i].u!=edges[i].v)){
merge(edges[i].u,edges[i].v);
res+=edges[i].w;
}
}
克鲁斯卡尔算法求最小生成树
最新推荐文章于 2023-07-25 20:08:11 发布