最小生成树之Kruskal算法

原创 2015年07月10日 22:14:16
struct Edge
{
  int u;
  int v;
  int w;
}edge[n];
bool cmp(Edge a,Edge b) //间接排序函数
{
  return a.w<b.w;
}
int find(int x)
{
  return p[x]==x?x:p[x]=find(p[x]);
}
int kruskal()
{
    for(int i=0;i<m;i++)
   {
     p[i]=i;  //初始化并查集
   }
    sort(edge,edge+n,cmp); //给边进行排序
    int sum=0,ans=0;
    for(int i=0;i<n;i++) //n为已知的总边数
    {
      int x=find(edge[i].u);
      int y=find(edge[i].v);
      if(x!=y)   //如果不在同一个集合里,则合并
      {
        ans+=edge[i].w;
        p[x]=y;
        sum++;
      }
      if(sum==m-1)
      return ans;
    }
}


相关文章推荐

最小生成树Kruskal算法

  • 2016年01月05日 18:00
  • 1KB
  • 下载

最小生成树的kruskal算法实现

  • 2017年04月27日 16:37
  • 1KB
  • 下载

caioj1090·最小生成树(模板 Kruskal算法)

1090: 最小生成树(模版 kruskal算法 元问题by scy) 时间限制: 1 Sec 内存限制: 128 MB 题目描述【题目描述】 一个有n个点的连通无向图,有m条无向边,每条边...
  • tycer
  • tycer
  • 2017年07月27日 20:14
  • 141

Prim和Kruskal算法求最小生成树

  • 2014年03月09日 18:55
  • 8KB
  • 下载

最小生成树之Kruskal算法实现

最小生成树kruskal算法实现

prim和kruskal算法求最小生成树

  • 2008年11月16日 07:55
  • 239KB
  • 下载

ZOJ 1406 POJ 1251 Jungle Roads 丛林中的道路,最小生成树,Kruskal算法

纯求最小生成树,注意输入的处理。

poj 2421 Constructing Roads(最小生成树 kruskal算法)

Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最小生成树之Kruskal算法
举报原因:
原因补充:

(最多只允许输入30个字)