为了账号安全,请及时绑定邮箱和手机立即绑定

MST

标签:
C++


prim

int prim(int x,int n)

{   

int sum=0;

memset(visit,false,sizeof(visit));

for(int i=1;i<=n;i++)

dis[i]=mp[x][i];

dis[x]=0;

visit[x]=true;

for(int i=1;i<=n;i++)

{

    int k,mincost=INF;

    for(int j=1;j<=n;j++)

    if(!visit[j]&&dis[j]<mincost)

    mincost=dis[k=j];

    if(mincost==INF) break;

    visit[k]=true;

    sum+=mincost;

    for(int j=1;j<=n;j++)

    {

        if(!visit[j]&&dis[j]>mp[k][j])

        dis[j]=mp[k][j]; 

    }

}

return sum;

}

Kruskal

int F(int x){return fat[x]==x?x:F(fat[x]);}

void join(int x,int y)

{

int fx=F(x);

int fy=F(y);

if(fy!=fx)fat[fy]=fx;

}

void kruskal()

{

for(int i=1;i<=m;i++)

{

    if(k==n-1)break; 

    if(F(g[i].u)!=F(g[i].v))

    {

        join(g[i].u,g[i].v);

        sum+=g[i].di;k++;

    }

}

}

©著作权归作者所有:来自51CTO博客作者qinXpeng的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消