c/c++语言开发共享Kruskal最小生成树

#include <bits/stdc++.h>using namespace std;#define maxn 1000int n,m;struct edge{ int u,v,w;}e[maxn];bool cmp(edge a,edge b){ return a.w<b.w;}int ans;//并查集int s[maxn];int find_set(int x){return x==s[x]?x:s[x]=find_set(s[x])

#include <bits/stdc++.h> using namespace std;  #define maxn 1000  int n,m; struct edge{     int u,v,w; }e[maxn];  bool cmp(edge a,edge b){     return a.w<b.w; }  int ans;  //并查集 int s[maxn]; int find_set(int x){return x==s[x]?x:s[x]=find_set(s[x]);}  void kruskal(){     iota(s,s+n+1,0);//初始化并查集     sort(e,e+m,cmp);//排序      int cnt(0);     for(int i=0;i<m;++i){         int x = find_set(e[i].u);         int y = find_set(e[i].v);         if(x==y) continue;         s[y] = x;         ans+=e[i].w;         if(++cnt == n-1) break;     } }  int main(){     cin>>n>>m;     for(int i=0;i<m;++i){         cin>>e[i].u>>e[i].v>>e[i].w;     }     kruskal();     cout<<ans;     return 0; } 

c/c++开发分享Kruskal最小生成树地址:https://blog.csdn.net/weixin_45826022/article/details/109257469

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/597169.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐