最小生成树模板——kruskal

来源:互联网 发布:php b2c商城系统二次开 编辑:程序博客网 时间:2024/05/22 01:29

kruskal算法

int par[MAX_N];struct edge{int u,v,len;}e[MAX_M];  bool cmp(edge x,edge y){ return x.len<y.len; }  int find(int x){return par[x]==x?x:par[x]=find(par[x]);}  int Union(int x,int y){      x=find(x),y=find(y);      if(x!=y){par[x]=y;return 1;}      return 0;  }  int Kruskal(int n,int m){      for(int i=1;i<=n;i++)par[i]=i;      sort(e+1,e+m+1,cmp);      int sum=0;     for(int i=1;i<=m;i++){          int u=e[i].u,v=e[i].v,len=e[i].len;          sum+=len*Union(u,v);      }      return sum;}
原创粉丝点击