void find(x)
{
if(fa[x]==x)return x;
else return find(fa[x]);
}
void kruscal()
{
sort(e+1,e+num+1,cmp);
for(int i=1;i<=n;i++)
fa[i]=i;
int tot=0;
int ans=0;
for(int i=1;i<=num;i++)
{
int x=e[i].x;
int y=e[i].y;
int f1=find(x);
int f2=find(y);
if(f1!=f2)
{
tot++;
ans+=e[i].l;
fa[f1]=f2;
if(tot==n-1)break;
}
}
}
最小生成树~kruscal
最新推荐文章于 2024-01-17 13:24:22 发布