码迷,mamicode.com
首页 > 其他好文 > 详细

并查集模板

时间:2019-01-30 20:27:44      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:结构   printf   function   nbsp   index   一个   clu   ring   i++   

//这么简单的东西我就不废话了,具体看代码<br data-filtered="filtered">#include<iostream>

#include<queue>
#include<cstdio>
using namespace std;
 
int n,m,fa[110],ans;//fa数组记录fa【i】的根;
 
struct str{
 
    int x,y,s; //x——起点,y——终点,s——权值;
 
}u[110];
 
int find(int x){ //寻找根;
 
    if(fa(x)==x) return x;
 
    else return fa(x)=find(fa(x));
 
}
 
bool cmp(str x,str y){ //结构体排序 ;
 
    return x.s<y.s;
 
}
 
int main(){
 
    scanf("%d%m",&n,&m);
 
    for(int i=1;i<=m;i++){
 
    scanf("%d%d%d",&u[i].x,&u[i].y,&u[i].s);
 
    }
 
    for(int i=1;i<=n;i++) fa[i]=i; //初始化根 ;
 
    sort(u+1,u+m+1,cmp);
 
    q=1;
 
    for(int i=1;i<=m;i++){
 
    int fx=find(u[i].x); //寻找起点的根 ;
 
    int fy=find(u[i].y); //寻找终点的根;
 
    if(fx!=fy){ //如果不是同一个根,将两个不同的集合合并,(将fx的根付给fy也行)如:
 
    fa[fx]=fy; //fa【fy】=fx;
 
    ans+=u[i].s; //加上权值
 
    q++; //记录链接的边
 
    }
 
    if(q==n) break;
 
    }
 
    printf("%d",ans);
 
    return 0;
 
}

并查集模板

标签:结构   printf   function   nbsp   index   一个   clu   ring   i++   

原文地址:https://www.cnblogs.com/noifish/p/10339612.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!